C# 如何给从数据库获取时间给datetime赋值

C# 如何给从数据库获取时间给datetime赋值,第1张

窗体控件都运行在UI线程中,只能由UI线程本身执行,如果在多线程中设置控件的内容,就会被视为不安全的代码,报出异常。具体解决方法就是在窗体构造函数中禁止跨线程安全检测访问。

public Form1

{

InitialComponents();

CheckForIllegalCrossThreadCalls = false;

}

如果你用的2008之前的数据库,这个问题是不能避免的。在sql server2008新增了date和time数据类型,分别用于专门存储日期和时间数据。但是这个问题其实也不是问题,你可以在显示的时候格式化一下就可以了,如:dtToString("yyyy-MM-dd");

可将时间类型定义为datetime,然后以字符串的形式插入即可。

如:

创建表:

create table test

(id int,

createtime datetime)

插入数据:

insert into test values (1,'2015-08-01')

插入后结果如图:

将DateTime类型转化成string类型即可,转化方法需要使用 SystemDateTime 类的 ToString() 方法,并为其指定格式字符串。

MSDN 中,SystemGlobalizationDateTimeFormatInfo 类的概述里对模式字符串有非常详细的说明,因此,这里我只对常用的一些格式进行说明,首先请看下表:

d 月中的某一天 一位数的日期没有前导

dd 月中的某一天 一位数的日期有一个前导零

ddd 周中某天的缩写名称 在 AbbreviatedDayNames 中定义

dddd 周中某天的完整名称 在 DayNames 中定义

M 月份数字 一位数的月份没有前导零

MM 月份数字 一位数的月份有一个前导零

MMM 月份的缩写名称 在 AbbreviatedMonthNames 中定义

MMMM 月份的完整名称 在 MonthNames 中定义

y 不包含纪元的年份 如果不包含纪元的年份小于 10,则显示不具有前导零的年份

yy 不包含纪元的年份 如果不包含纪元的年份小于 10,则显示具有前导零的年份

yyyy 包括纪元的四位数的年份

h 12 小时制的小时 一位数的小时数没有前导零

hh 12 小时制的小时 一位数的小时数有前导零

H 24 小时制的小时 一位数的小时数没有前导零

HH 24 小时制的小时 一位数的小时数有前导零

m 分钟 一位数的分钟数没有前导零

mm 分钟 一位数的分钟数有一个前导零

s 秒 一位数的秒数没有前导零

ss 秒 一位数的秒数有一个前导零

为了便于理解,不妨试试下面的程序:

private void TestDateTimeToString() { DateTime now = DateTimeNow; string format; thistextBox1Text = ""; format = "yyyy-MM-dd HH:mm:ss"; thistextBox1AppendText(format + ": " + nowToString(format) + "\n"); format = "yy年M日d日"; thistextBox1AppendText(format + ": " + nowToString(format) + "\n");} 

这段程序将输出结果:

yyyy-MM-dd HH:mm:ss: 2002-08-26 17:03:04

yy年M日d日: 02年8日26日

DateTime dt = DateTimeNow;

// Label1Text = dtToString();//2005-11-5 13:21:25

// Label2Text = dtToFileTime()ToString();//127756416859912816

// Label3Text = dtToFileTimeUtc()ToString();//127756704859912816

// Label4Text = dtToLocalTime()ToString();//2005-11-5 21:21:25

// Label5Text = dtToLongDateString()ToString();//2005年11月5日

// Label6Text = dtToLongTimeString()ToString();//13:21:25

// Label7Text = dtToOADate()ToString();//386615565508218

// Label8Text = dtToShortDateString()ToString();//2005-11-5

// Label9Text = dtToShortTimeString()ToString();//13:21

// Label10Text = dtToUniversalTime()ToString();//2005-11-5 5:21:25

// 2005-11-5 13:30:284412864

// Label1Text = dtYearToString();//2005

// Label2Text = dtDateToString();//2005-11-5 0:00:00

// Label3Text = dtDayOfWeekToString();//Saturday

// Label4Text = dtDayOfYearToString();//309

// Label5Text = dtHourToString();//13

// Label6Text = dtMillisecondToString();//441

// Label7Text = dtMinuteToString();//30

// Label8Text = dtMonthToString();//11

// Label9Text = dtSecondToString();//28

// Label10Text = dtTicksToString();//632667942284412864

// Label11Text = dtTimeOfDayToString();//13:30:284412864

// Label1Text = dtToString();//2005-11-5 13:47:04

// Label2Text = dtAddYears(1)ToString();//2006-11-5 13:47:04

// Label3Text = dtAddDays(11)ToString();//2005-11-6 16:11:04

// Label4Text = dtAddHours(11)ToString();//2005-11-5 14:53:04

// Label5Text = dtAddMilliseconds(11)ToString();//2005-11-5 13:47:04

// Label6Text = dtAddMonths(1)ToString();//2005-12-5 13:47:04

// Label7Text = dtAddSeconds(11)ToString();//2005-11-5 13:47:05

// Label8Text = dtAddMinutes(11)ToString();//2005-11-5 13:48:10

// Label9Text = dtAddTicks(1000)ToString();//2005-11-5 13:47:04

// Label10Text = dtCompareTo(dt)ToString();//0

//// Label11Text = dtAdd()ToString();//问号为一个时间段

// Label1Text = dtEquals("2005-11-6 16:11:04")ToString();//False

// Label2Text = dtEquals(dt)ToString();//True

// Label3Text = dtGetHashCode()ToString();//1474088234

// Label4Text = dtGetType()ToString();//SystemDateTime

// Label5Text = dtGetTypeCode()ToString();//DateTime

// Label1Text = dtGetDateTimeFormats('s')[0]ToString();//2005-11-05T14:06:25

// Label2Text = dtGetDateTimeFormats('t')[0]ToString();//14:06

// Label3Text = dtGetDateTimeFormats('y')[0]ToString();//2005年11月

// Label4Text = dtGetDateTimeFormats('D')[0]ToString();//2005年11月5日

// Label5Text = dtGetDateTimeFormats('D')[1]ToString();//2005 11 05

// Label6Text = dtGetDateTimeFormats('D')[2]ToString();//星期六 2005 11 05

// Label7Text = dtGetDateTimeFormats('D')[3]ToString();//星期六 2005年11月5日

// Label8Text = dtGetDateTimeFormats('M')[0]ToString();//11月5日

// Label9Text = dtGetDateTimeFormats('f')[0]ToString();//2005年11月5日 14:06

// Label10Text = dtGetDateTimeFormats('g')[0]ToString();//2005-11-5 14:06

// Label11Text = dtGetDateTimeFormats('r')[0]ToString();//Sat, 05 Nov 2005 14:06:25 GMT

Label1Text = stringFormat("{0:d}",dt);//2005-11-5

Label2Text = stringFormat("{0:D}",dt);//2005年11月5日

Label3Text = stringFormat("{0:f}",dt);//2005年11月5日 14:23

Label4Text = stringFormat("{0:F}",dt);//2005年11月5日 14:23:23

Label5Text = stringFormat("{0:g}",dt);//2005-11-5 14:23

Label6Text = stringFormat("{0:G}",dt);//2005-11-5 14:23:23

Label7Text = stringFormat("{0:M}",dt);//11月5日

Label8Text = stringFormat("{0:R}",dt);//Sat, 05 Nov 2005 14:23:23 GMT

Label9Text = stringFormat("{0:s}",dt);//2005-11-05T14:23:23

Label10Text = stringFormat("{0:t}",dt);//14:23

Label11Text = stringFormat("{0:T}",dt);//14:23:23

Label12Text = stringFormat("{0:u}",dt);//2005-11-05 14:23:23Z

Label13Text = stringFormat("{0:U}",dt);//2005年11月5日 6:23:23

Label14Text = stringFormat("{0:Y}",dt);//2005年11月

Label15Text = stringFormat("{0}",dt);//2005-11-5 14:23:23

Label16Text = stringFormat("{0:yyyyMMddHHmmssffff}",dt);

C# 时间(几个常用时间,程序运行计时,页面运行计时)

DateTime now = SystemDateTimeNow;

nowToString(); //显示: 2006/08/30 17:31:02

nowToString("yyyy-MM-dd hh:mm:ss"); //显示: 2006-08-30 05:39:11

SystemDateTimeMaxValueToString(); //显示: 9999/12/31 23:59:59

SystemDateTimeMinValueToString(); //显示: 0001/01/01 0:00:00

nowToLongDateString(); //显示: 2006年8月30日

nowToLongTimeString(); //显示: 17:34:23

nowToShortTimeString(); //显示: 17:34

nowToString() + " " + nowMillisecondToString(); //显示: 2006/08/30 17:35:19 484

修改日期类型为timestamp 并允许空,如下:

CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestamp NULL DEFAULT

CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT

CHARSET=utf8;

如果是在navicat下 *** 作的话,设置字段的类型为timestamp,默认值写上CURRENT_TIMESTAMP

扩展资料

mysql中的时间类型:

mysql中我们用的时间类型有DATE DATETIME TIME TIMESTAMP四种:

1、DATE只表示日期,检索以YYYY-MM-DD的格式显示,范围是1000-01-01到9999-12-31。

2、TIME只表示时间,检索以HH:MM:SS格式显示,范围是00:00:00到23:59:59。

3、DATETIME表示了日期和时间,检索以YYYY-MM-DD HH:MM:SS格式显示。

4、TIMESTAMP和DATETIME表示格式一样两者的不同点如下:

当使用timestamp的时候,数据有更新的时候这个字段自动更新为当前时间,所以可以作为lastmodify使用,这个变化是默认设置,如果想使时间不更新可以设置DEFAULT CURRENT_TIMESTAMP

timestamp的范围不能早于1970或者晚于2037,超过这个时间范围的话为0。

timestamp存储的时候是转为UTC存储的,获取的时候根据客户端所在时区进行展示。

timestamp占4个字节,datetime占8个字节。

1、stringFormat("{0:g}",dt);//2005-11-5 14:23

2、stringFormat("{0:yyyy\\/MM\\/dd HH:mm:ss}",dt);//2005/11/5 14:23:20 这种格式更适合老外的格式

Decimal也是同理的(对于数据库数据类型为money的数据相当的好用)

var dd = 2000562M;

StringFormat("{0:000}", dd)

显示结果为20006 注意到没有四舍五入了

如果dt=null的话也是可以的,为null时显示是空。

以上就是关于C# 如何给从数据库获取时间给datetime赋值全部的内容,包括:C# 如何给从数据库获取时间给datetime赋值、文本框输入时间传给数据库datetime,不存时分秒、如何在数据库输入时间类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9304528.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存