DateTime整理汇总

来源:互联网 发布:天谕白帝捏脸数据下载 编辑:程序博客网 时间:2024/06/06 05:40

smalldatetime的有效时间范围1900/1/1~2079/6/6

datetime的有效时间范围1753/1/1~9999/12/31

它们更关键的差别是smalldatetime只精准到分,而datetime则可精准到3.33毫秒。

SQL Server中,smalldatetime只能精确到分钟,而datatime可以精确到3%秒(3.33毫秒)。

smalldatetime占用4个字节,前2个字节存储base date(1900年1月1日)之后的天数。后2个字节存储午夜后的分钟数

datetime占用8个字节,前4个字节存储base date(即1900年1月1日)之前之后的天数,后4个字节存储午夜后的毫秒数

由于datetime的精度是3%秒,这就涉及到小数,毫秒之前可以是冒号,也可以是小数点。使用冒号时表示的意义同时分秒间隔,11:11:11:21表示021毫秒,前面的0省略,而小数点表示的意义同数学上的小数点,如11:11:11.21表示210毫秒,省略的是后面的0。

//获取日期+时间
DateTime.Now.ToString();              // 2008-9-4 20:02:10
DateTime.Now.ToLocalTime().ToString();// 2008-9-4 20:12:12

//获取日期
DateTime.Now.ToLongDateString().ToString();   // 2008年9月4日
DateTime.Now.ToShortDateString().ToString();   // 2008-9-4
DateTime.Now.ToString("yyyy-MM-dd");       // 2008-09-04
DateTime.Now.Date.ToString();           // 2008-9-4 0:00:00

//获取时间
DateTime.Now.ToLongTimeString().ToString();  // 20:16:16
DateTime.Now.ToShortTimeString().ToString();  // 20:16
DateTime.Now.ToString("hh:mm:ss");       // 08:05:57
DateTime.Now.TimeOfDay.ToString();       // 20:33:50.7187500

//其他
DateTime.ToFileTime().ToString();      // 128650040212500000
DateTime.Now.ToFileTimeUtc().ToString();  // 128650040772968750
DateTime.Now.ToOADate().ToString();      // 39695.8461709606
DateTime.Now.ToUniversalTime().ToString();  // 2008-9-4 12:19:14

DateTime.Now.Year.ToString();         获取年份  // 2008
DateTime.Now.Month.ToString();     获取月份  // 9
DateTime.Now.DayOfWeek.ToString();获取星期  // Thursday
DateTime.Now.DayOfYear.ToString();获取第几天  // 248
DateTime.Now.Hour.ToString();         获取小时  // 20
DateTime.Now.Minute.ToString();    获取分钟  // 31
DateTime.Now.Second.ToString();    获取秒数  // 45

//n为一个数,可以数整数,也可以事小数
dt.AddYears(n).ToString();  //时间加n年
dt.AddDays(n).ToString();  //加n天
dt.AddHours(n).ToString();  //加n小时
dt.AddMonths(n).ToString();  //加n个月
dt.AddSeconds(n).ToString();  //加n秒
dt.AddMinutes(n).ToString();  //加n分
1.string strTime = DateTime.Now.ToLongTimeString();


--------------------------------------------------------------------------------
2.
DateTime dt = DateTime.Now;  
String str = dt.ToString("yyyy-MM-dd");

或者
string str = DateTime.Now.ToString("yyyy-MM-dd");  
or  
string str = DateTime.Now.ToShortDateString();


---------------------------------------------------------------------

3.DateTime.Now.ToString("yyyy-MM-dd");取日期,得到如2005-02-18的格式
DateTime.Now.ToString("hh:mm:ss");取时间,得到如10:45:30的格式
格式 显示
M/d/yy    12/7/58
d-MMM     7-Dec
d-MMMM-yy 7-December-58
d MMMM    7 December
MMMM yy   December 58
hh:mm tt  08:50 PM
h:mm:ss t 8:50:35 P
H:mm      20:50
H:mm:ss   20:50:35
M/d/yyyy H:mm 12/7/1958 20:50

字符 说明
(:)时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。格式化输出中用作时间分隔符的实际字符由系统的LocaleID值确定。
(/)日期分隔符。在某些区域设置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。格式化输出中用作日期分隔符的实际字符由您的区域设置确定。
(%)用于表明不论尾随什么字母,随后字符都应该以单字母格式读取。也用于表明单字母格式应以用户定义格式读取。有关详细信息,请参阅下面的内容。
d将日显示为不带前导零的数字(如 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %d。
dd将日显示为带前导零的数字(如 01)。
ddd将日显示为缩写形式(例如 Sun)。
dddd将日显示为全名(例如 Sunday)。
M将月份显示为不带前导零的数字(如一月表示为 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %M。
MM将月份显示为带前导零的数字(例如 01/12/01)。
MMM将月份显示为缩写形式(例如 Jan)。
MMMM将月份显示为完整月份名(例如 January)。
gg显示时代/纪元字符串(例如 A.D.)
h使用12小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。如果这是用户定义的数字格式中的唯一字符,请使用%h。
hh使用 12小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。
H使用 24小时制将小时显示为不带前导零的数字(例如 1:15:15)。如果这是用户定义的数字格式中的唯一字符,请使用%H。
HH使用 24小时制将小时显示为带前导零的数字(例如 01:15:15)。
m将分钟显示为不带前导零的数字(例如 12:1:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %m。
mm将分钟显示为带前导零的数字(例如 12:01:15)。
s将秒显示为不带前导零的数字(例如 12:15:5)。如果这是用户定义的数字格式中的唯一字符,请使用 %s。
ss将秒显示为带前导零的数字(例如 12:15:05)。
f显示秒的小数部分。例如,ff将精确显示到百分之一秒,而 ffff将精确显示到万分之一秒。用户定义格式中最多可使用七个f符号。如果这是用户定义的数字格式中的唯一字符,请使用%f。
t使用 12小时制,并对中午之前的任一小时显示大写的 A,对中午到 11:59 P.M之间的任一小时显示大写的P。如果这是用户定义的数字格式中的唯一字符,请使用 %t。
tt使用 12小时制,并对中午之前任一小时显示大写的 AM;对中午到 11:59 P.M之间的任一小时显示大写的PM。
y将年份 (0-9)显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用 %y。
yy以带前导零的两位数字格式显示年份(如果适用)。
yyy以三位数字格式显示年份。
yyyy以四位数字格式显示年份。
z显示不带前导零的时区偏移量(如 -8)。如果这是用户定义的数字格式中的唯一字符,请使用 %z。
zz显示带前导零的时区偏移量(例如 -08)
zzz显示完整的时区偏移量(例如 -08:00)

DateTime.Now.ToShortTimeString() 
DateTime dt = DateTime.Now; 
dt.ToString();//2005-11-5 13:21:25 
dt.ToFileTime().ToString();//127756416859912816 
dt.ToFileTimeUtc().ToString();//127756704859912816 
dt.ToLocalTime().ToString();//2005-11-5 21:21:25 
dt.ToLongDateString().ToString();//2005年11月5日 
dt.ToLongTimeString().ToString();//13:21:25 
dt.ToOADate().ToString();//38661.5565508218 
dt.ToShortDateString().ToString();//2005-11-5 
dt.ToShortTimeString().ToString();//13:21 
dt.ToUniversalTime().ToString();//2005-11-5 5:21:25 
dt.Year.ToString();//2005 
dt.Date.ToString();//2005-11-5 0:00:00 
dt.DayOfWeek.ToString();//Saturday 
dt.DayOfYear.ToString();//309 
dt.Hour.ToString();//13 
dt.Millisecond.ToString();//441 
dt.Minute.ToString();//30 
dt.Month.ToString();//11 
dt.Second.ToString();//28 
dt.Ticks.ToString();//632667942284412864 
dt.TimeOfDay.ToString();//13:30:28.4412864 
dt.ToString();//2005-11-5 13:47:04 
dt.AddYears(1).ToString();//2006-11-5 13:47:04 
dt.AddDays(1.1).ToString();//2005-11-6 16:11:04 
dt.AddHours(1.1).ToString();//2005-11-5 14:53:04 
dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04 
dt.AddMonths(1).ToString();//2005-12-5 13:47:04 
dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05 
dt.AddMinutes(1.1).ToString();//2005-11-5 13:48:10 
dt.AddTicks(1000).ToString();//2005-11-5 13:47:04 
dt.CompareTo(dt).ToString();//0 
dt.Add(?).ToString();//问号为一个时间段 
dt.Equals("2005-11-6 16:11:04").ToString();//False 
dt.Equals(dt).ToString();//True 
dt.GetHashCode().ToString();//1474088234 
dt.GetType().ToString();//System.DateTime 
dt.GetTypeCode().ToString();//DateTime

dt.GetDateTimeFormats('s')[].ToString();//2005-11-05T14:06:25 
dt.GetDateTimeFormats('t')[].ToString();//14:06 
dt.GetDateTimeFormats('y')[].ToString();//2005年11月 
dt.GetDateTimeFormats('D')[].ToString();//2005年11月5日 
dt.GetDateTimeFormats('D')[1].ToString();//2005 11 05 
dt.GetDateTimeFormats('D')[2].ToString();//星期六 2005 11 05 
dt.GetDateTimeFormats('D')[3].ToString();//星期六 2005年11月5日 
dt.GetDateTimeFormats('M')[].ToString();//11月5日 
dt.GetDateTimeFormats('f')[].ToString();//2005年11月5日 14:06 
dt.GetDateTimeFormats('g')[].ToString();//2005-11-5 14:06 
dt.GetDateTimeFormats('r')[].ToString();//Sat, 05 Nov 2005 14:06:25 GMT 
string.Format("{0:d}",dt);//2005-11-5 
string.Format("{0}",dt);//2005年11月5日 
string.Format("{0:f}",dt);//2005年11月5日 14:23 
string.Format("{0:F}",dt);//2005年11月5日 14:23:23 
string.Format("{0:g}",dt);//2005-11-5 14:23 
string.Format("{0:G}",dt);//2005-11-5 14:23:23 
string.Format("{0:M}",dt);//11月5日 
string.Format("{0:R}",dt);//Sat, 05 Nov 2005 14:23:23 GMT 
string.Format("{0:s}",dt);//2005-11-05T14:23:23 
string.Format("{0:t}",dt);//14:23 
string.Format("{0:T}",dt);//14:23:23 
string.Format("{0:u}",dt);//2005-11-05 14:23:23Z 
string.Format("{0:U}",dt);//2005年11月5日 6:23:23 
string.Format("{0:Y}",dt);//2005年11月 
string.Format("{0}",dt);//2005-11-5 14:23:23 
string.Format("{0:yyyyMMddHHmmssffff}",dt); 
计算2个日期之间的天数差 
----------------------------------------------- 
DateTime dt1 = Convert.DateTime("2007-8-1"); 
DateTime dt2 = Convert.DateTime("2007-8-15"); 
TimeSpan span = dt2.Subtract(dt1); 
int dayDiff = span.Days + 1; 
计算某年某月的天数 
----------------------------------------------- 
int days = DateTime.DaysInMonth(2007, 8); 
days = 31; 
给日期增加一天、减少一天 
----------------------------------------------- 
DateTime dt =DateTime.Now; 
dt.AddDays(1); //增加一天 
dt.AddDays(-1);//减少一天 
其它年份方法类似... 
Oracle SQL里转换日期函数 
----------------------------------------------- 
to_date("2007-6-6",'YYYY-MM-DD"); 
to_date("2007/6/6",'yyyy/mm/dd"); 
如下一组数据,如何查找表里包含9月份的记录: 
CGGC_STRATDATE CGGC_ENDDATE 
========================================= 
2007-8-4 2007-9-5 
2007-9-5 2007-9-20 
2007-9-22 2007-10-5 
SELECT * FROM TABLE 
(TO_DATE('2007/9/1','yyyy/mm/dd') BETWEEN CGGC_STRATDATE 
AND CGGC_ENDDATE OR CGGC_STRATDATE >=TO_DATE('2007/9/1','yyyy/mm/dd') 
AND CGGC_ENDDATE<=TO_DATE('2007/9/30','yyyy/mm/dd') " 
OR TO_DATE('2007/9/30','yyyy/mm/dd') BETWEEN CGGC_STRATDATE 
AND CGGC_ENDDATE) ORDER BY CGGC_STRATDATE ASC