DateTime整理汇总


http://lds2013.diandian.com/post/2011-08-27/4387928

DateTime整理汇总

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
94
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();//2005115 
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();//200511 
dt.GetDateTimeFormats('D')[].ToString();//2005115 
dt.GetDateTimeFormats('D')[1].ToString();//2005 11 05 
dt.GetDateTimeFormats('D')[2].ToString();//星期六 2005 11 05 
dt.GetDateTimeFormats('D')[3].ToString();//星期六 2005115 
dt.GetDateTimeFormats('M')[].ToString();//115 
dt.GetDateTimeFormats('f')[].ToString();//2005115 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);//2005115 
string.Format("{0:f}",dt);//2005115 14:23 
string.Format("{0:F}",dt);//2005115 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);//115 
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);//2005115 6:23:23 
string.Format("{0:Y}",dt);//200511 
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(20078); 
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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值