C# API(一) ------ DateTime类解析

在项目中经常会用到DateTime类,此篇文章就是总结下,以便以后查阅

1.静态变量:
MaxValue    表示 DateTime 的最大可能值。
MinValue    表示 DateTime 的最小可能值。
Now    获取一个 DateTime 对象,该对象设置为此计算机上的当前日期和时间,表示为本地时间。
UtcNow    获取一个 DateTime 对象,该对象设置为此计算机上的当前日期和时间,表示为世界调整时间 (UTC)。
Today    获取当前日期。
2.属性
Ticks    获取表示此实例的日期和时间的计时周期数。
Date    获取此实例的日期部分。
Millisecond    获取此实例所表示日期的毫秒部分。
Second    获取此实例所表示日期的秒部分。
Minute    获取此实例所表示日期的分钟部分。
Hour    获取此实例所表示日期的小时部分。
TimeOfDay    获取此实例的当天的时间
DayOfYear    获取此实例所表示的日期是该年中的第几天。
DayOfWeek    获取此实例所表示的日期是星期几
Day    获取此实例所表示的日期为该月中的第几天
Month    获取此实例所表示日期的月份部分。
Year    获取此实例所表示日期的年份部分。
Kind    获取一个值,该值指示由此实例表示的时间是基于本地时间、协调世界时 (UTC),还是两者皆否
3.静态方法
Compare    对两个 DateTime 的实例进行比较,并返回一个指示第一个实例是早于、等于还是晚于第二个实例的整数。
DaysInMonth    返回指定年和月中的天数。
Equals    返回一个值,该值指示此实例是否等于指定的对象。
FromBinary    反序列化一个 64 位二进制值,并重新创建序列化的 DateTime 初始对象。
FromFileTime    将指定的 Windows 文件时间转换为等效的本地时间。
FromFileTimeUtc    将指定的 Windows 文件时间转换为等效的 UTC 时间。
FromOADate    返回与指定的 OLE 自动化日期等效的 DateTime。
IsLeapYear    返回指定的年份是否为闰年的指示。
Parse    将日期和时间的字符串表示形式转换为其等效的 DateTime。
SpecifyKind    创建新的 DateTime 对象,该对象具有与指定的 DateTime 相同的刻度数,但是根据指定的DateTimeKind 值的指示,指定为本地时间或协调世界时 (UTC),或者两者皆否。
ParseExact    使用指定的格式和区域性特定格式信息,将日期和时间的指定字符串表示形式转换为其等效的 DateTime。 字符串表示形式的格式必须与指定的格式完全匹配。
TryParse    使用指定的区域性特定格式信息和格式设置样式,将日期和时间的指定字符串表示形式转换为其 DateTime 等效项,并返回一个指示转换是否成功的值。
TryParseExact    使用指定的格式、区域性特定的格式信息和样式将日期和时间的指定字符串表示形式转换为其等效的 DateTime。 字符串表示形式的格式必须与指定的格式完全匹配。 该方法返回一个指示转换是否成功的值。
4.公共方法
Add    返回一个新的 DateTime,它将指定 TimeSpan 的值添加到此实例的值上。(注意:实例本身不变)
AddDays    返回一个新的 DateTime,它将指定的天数加到此实例的值上。(注意:实例本身不变)
AddHours    返回一个新的 DateTime,它将指定的小时数加到此实例的值上。(注意:实例本身不变)
AddMilliseconds    返回一个新的 DateTime,它将指定的毫秒数加到此实例的值上。(注意:实例本身不变)
AddMinutes    返回一个新的 DateTime,它将指定的分钟数加到此实例的值上。(注意:实例本身不变)
AddMonths    返回一个新的 DateTime,它将指定的月数加到此实例的值上。(注意:实例本身不变)
AddSeconds    返回一个新的 DateTime,它将指定的秒数加到此实例的值上。(注意:实例本身不变)
AddTicks    返回一个新的 DateTime,它将指定的刻度数加到此实例的值上。(注意:实例本身不变)
AddYears    返回一个新的 DateTime,它将指定的年份数加到此实例的值上。(注意:实例本身不变)
CompareTo    对两个 DateTime 的实例进行比较,并返回一个指示第一个实例是早于、等于还是晚于第二个实例的整数。
Equals    返回一个值,该值指示此实例的值是否等于指定 DateTime 实例的值。
GetDateTimeFormats    将此实例的值转换为标准日期和时间格式说明符支持的所有字符串表示形式。
GetHashCode    返回此实例的哈希代码。
GetTypeCode    返回值类型 TypeCode 的 DateTime。
IsDaylightSavingTime    指示此 DateTime 实例是否在当前时区的夏时制范围内。
Subtract    从此实例中减去指定的日期和时间
ToBinary    将当前 DateTime 对象序列化为一个 64 位二进制值,该值随后可用于重新创建 DateTime对象。
ToFileTime    将当前 DateTime 对象的值转换为 Windows 文件时间。
ToFileTimeUtc    将当前 DateTime 对象的值转换为 Windows 文件时间。
ToLocalTime    将当前 DateTime 对象的值转换为本地时间。
ToLongDateString    将当前 DateTime 对象的值转换为其等效的长日期字符串表示形式。
ToLongTimeString    将当前 DateTime 对象的值转换为其等效的长时间字符串表示形式。
ToOADate    将此实例的值转换为等效的 OLE 自动化日期。
ToShortDateString    将当前 DateTime 对象的值转换为其等效的短日期字符串表示形式。
ToShortTimeString    将当前 DateTime 对象的值转换为其等效的短时间字符串表示形式。
ToString    使用指定的区域性特定格式信息将当前 DateTime 对象的值转换为它的等效字符串表示形式。
ToUniversalTime    将当前 DateTime 对象的值转换为协调世界时 (UTC)。
5.操作符:
+
-
==
!=
<
>
<=
>=
 

6.常用的日期时间格式:
格式     说明           输出格式 
d    精简日期格式    MM/dd/yyyy 
D    详细日期格式    dddd, MMMM dd, yyyy 
f    完整格式    dddd, MMMM dd, yyyy HH:mm 
F    完整日期格式    dddd, MMMM dd, yyyy HH:mm:ss 
g    一般格式(short date + short time)     MM/dd/yyyy HH:mm
G    一般格式 (short date + long time)    MM/dd/yyyy HH:mm:ss 
m/M    月日格式     MMMM dd 
s    适中日期时间格式     yyyy-MM-dd HH:mm:ss 
t    精简时间格式    HH:mm
T    详细时间格式    HH:mm:ss
 

7.使用举例:
①.计算2个日期之间的天数差

DateTime dt1 = Convert.ToDateTime("2007-8-1");    
DateTime dt2 = Convert.ToDateTime("2007-8-15");   
TimeSpan span = dt2.Subtract(dt1);              
int dayDiff = span.Days ;         
②. 计算某年某月的天数

int days = DateTime.DaysInMonth(2009, 8);       
③. 给日期增加一天、减少一天

DateTime dt =DateTime.Now;
dt.AddDays(1); //增加一天 dt本身并不改变
dt.AddDays(-1);//减少一天 dt本身并不改变

 

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

获得当前系统时间: DateTime dt = DateTime.Now;
Environment.TickCount可以得到“系统启动到现在”的毫秒值
DateTime now = DateTime.Now;
Console.WriteLine(now.ToString("yyyy-MM-dd"));  //按yyyy-MM-dd格式输出s
Console.WriteLine(dt.ToString());    //  26/11/2009 AM 11:21:30
Console.WriteLine(dt.ToFileTime().ToString());   //   129036792908014024
// Converts the value of the current System.DateTime object to a Windows file time
Console.WriteLine(dt.ToFileTimeUtc().ToString());  //     129036792908014024
// Converts the value of the current System.DateTime object to a Windows file time
Console.WriteLine(dt.ToLocalTime().ToString());   //       26/11/2009 AM 11:21:30
// Converts the value of the current System.DateTime object to local time.
Console.WriteLine(dt.ToLongDateString().ToString());   //      2009年11月26日
Console.WriteLine(dt.ToLongTimeString().ToString());  //      AM 11:21:30
Console.WriteLine(dt.ToOADate().ToString());   //      40143.4732731597
Console.WriteLine(dt.ToShortDateString().ToString());   //     26/11/2009
Console.WriteLine(dt.ToShortTimeString().ToString());   //     AM 11:21
Console.WriteLine(dt.ToUniversalTime().ToString());   //       26/11/2009 AM 3:21:30
Console.WriteLine(dt.Year.ToString());   //        2009
Console.WriteLine(dt.Date.ToString());   //        26/11/2009 AM 12:00:00
Console.WriteLine(dt.DayOfWeek.ToString());  //       Thursday
Console.WriteLine(dt.DayOfYear.ToString());   //       330
Console.WriteLine(dt.Hour.ToString());       //        11
Console.WriteLine(dt.Millisecond.ToString());   //     801        (毫秒)
Console.WriteLine(dt.Minute.ToString());   //      21
Console.WriteLine(dt.Month.ToString());   //       11
Console.WriteLine(dt.Second.ToString());   //      30
Console.WriteLine(dt.Ticks.ToString());   //       633948312908014024


Console.WriteLine(dt.TimeOfDay.ToString());   //       12:29:51.5181524
// Gets the time of day for this instance.
// 返回 A System.TimeSpan that represents the fraction of the day that has elapsed since midnight.
Console.WriteLine(dt.ToString());     //     26/11/2009 PM 12:29:51
Console.WriteLine(dt.AddYears(1).ToString());    //         26/11/2010 PM 12:29:51
Console.WriteLine(dt.AddDays(1.1).ToString());    //        27/11/2009 PM 2:53:51
Console.WriteLine(dt.AddHours(1.1).ToString());    //       26/11/2009 PM 1:35:51
Console.WriteLine(dt.AddMilliseconds(1.1).ToString());    //26/11/2009 PM 12:29:51
Console.WriteLine(dt.AddMonths(1).ToString());    //        26/12/2009 PM 12:29:51
Console.WriteLine(dt.AddSeconds(1.1).ToString());    //     26/11/2009 PM 12:29:52
Console.WriteLine(dt.AddMinutes(1.1).ToString());    //     26/11/2009 PM 12:30:57
Console.WriteLine(dt.AddTicks(1000).ToString());    //      26/11/2009 PM 12:29:51
Console.WriteLine(dt.CompareTo(dt).ToString());    //       0
Console.WriteLine(dt.Add(new TimeSpan(1,0,0,0)).ToString());    // 加上一个时间段
(注:
System.TimeSpan为一个时间段,构造函数如下
public TimeSpan(long ticks); // ticks: A time period expressed in 100-nanosecond units.
                           //nanosecond:十亿分之一秒   new TimeSpan(10,000,000)        为一秒
public TimeSpan(int hours, int minutes, int seconds);
public TimeSpan(int days, int hours, int minutes, int seconds);
public TimeSpan(int days, int hours, int minutes, int seconds, int milliseconds);

Console.WriteLine(dt.Equals("2005-11-6 16:11:04").ToString());     //        False
Console.WriteLine(dt.Equals(dt).ToString());    //      True
Console.WriteLine(dt.GetHashCode().ToString());    //       1103291775
Console.WriteLine(dt.GetType().ToString());    //       System.DateTime
Console.WriteLine(dt.GetTypeCode().ToString());    //       DateTime
  
long Start = Environment.TickCount;   //单位是毫秒
long End = Environment.TickCount;
Console.WriteLine("Start is : "+Start);
Console.WriteLine("End is : "+End);
Console.WriteLine("The Time is {0}",End-Start);
Console.WriteLine(dt.GetDateTimeFormats('s')[0].ToString());    //2009-11-26T13:29:06
Console.WriteLine(dt.GetDateTimeFormats('t')[0].ToString());    //PM 1:29
Console.WriteLine(dt.GetDateTimeFormats('y')[0].ToString());    //2009年11月
Console.WriteLine(dt.GetDateTimeFormats('D')[0].ToString());    //2009年11月26日
Console.WriteLine(dt.GetDateTimeFormats('D')[1].ToString());    //星期四, 26 十一月, 2009
Console.WriteLine(dt.GetDateTimeFormats('D')[2].ToString());    //26 十一月, 2009
Console.WriteLine(dt.GetDateTimeFormats('D')[3].ToString());    //星期四 2009 11 26
Console.WriteLine(dt.GetDateTimeFormats('M')[0].ToString());    //26 十一月
Console.WriteLine(dt.GetDateTimeFormats('f')[0].ToString());    //2009年11月26日 PM 1:29
Console.WriteLine(dt.GetDateTimeFormats('g')[0].ToString());    //26/11/2009 PM 1:29
Console.WriteLine(dt.GetDateTimeFormats('r')[0].ToString());    //Thu, 26 Nov 2009 13:29:06 GMT
(注:
常用的日期时间格式:
格式 说明      输出格式 
d 精简日期格式 MM/dd/yyyy 
D 详细日期格式 dddd, MMMM dd, yyyy 
f  完整格式    (long date + short time) dddd, MMMM dd, yyyy HH:mm 
F 完整日期时间格式 (long date + long time) dddd, MMMM dd, yyyy HH:mm:ss 
g 一般格式 (short date + short time) MM/dd/yyyy HH:mm 
G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss 
m,M 月日格式 MMMM dd 
s 适中日期时间格式 yyyy-MM-dd HH:mm:ss 
t 精简时间格式 HH:mm 
T 详细时间格式 HH:mm:ss
)


Console.WriteLine(string.Format("{0:d}", dt));    //28/12/2009
Console.WriteLine(string.Format("{0:D}", dt));    //2009年12月28日
Console.WriteLine(string.Format("{0:f}", dt));    //2009年12月28日 AM 10:29
Console.WriteLine(string.Format("{0:F}", dt));    //2009年12月28日 AM 10:29:18
Console.WriteLine(string.Format("{0:g}", dt));    //28/12/2009 AM 10:29
Console.WriteLine(string.Format("{0:G}", dt));    //28/12/2009 AM 10:29:18
Console.WriteLine(string.Format("{0:M}", dt));    //28 十二月
Console.WriteLine(string.Format("{0:R}", dt));    //Mon, 28 Dec 2009 10:29:18 GMT
Console.WriteLine(string.Format("{0:s}", dt));    //2009-12-28T10:29:18
Console.WriteLine(string.Format("{0:t}", dt));    //AM 10:29
Console.WriteLine(string.Format("{0:T}", dt));    //AM 10:29:18
Console.WriteLine(string.Format("{0:u}", dt));    //2009-12-28 10:29:18Z
Console.WriteLine(string.Format("{0:U}", dt));    //2009年12月28日 AM 2:29:18
Console.WriteLine(string.Format("{0:Y}", dt));    //2009年12月
Console.WriteLine(string.Format("{0}", dt));    //28/12/2009 AM 10:29:18
Console.WriteLine(string.Format("{0:yyyyMMddHHmmssffff}", dt));    //200912281029182047


计算2个日期之间的天数差
DateTime dt1 = Convert.ToDateTime("2007-8-1");    
DateTime dt2 = Convert.ToDateTime("2007-8-15");   
TimeSpan span = dt2.Subtract(dt1);              
int dayDiff = span.Days ;                    


计算某年某月的天数
int days = DateTime.DaysInMonth(2009, 8);       
days = 31;                                      


给日期增加一天、减少一天
DateTime dt =DateTime.Now;
dt.AddDays(1); //增加一天 dt本身并不改变
dt.AddDays(-1);//减少一天 dt本身并不改变
---------------------------------------------------------------------------------------------------------------------

你可能感兴趣的:(c#)