C# DateTime类,TimeSpan类
DateTime类是.Net中用于处理时间类型数据的。
一、字段
MaxValue 表示 DateTime 的最大可能值。此字段为只读。
MinValue 表示 DateTime 的最小可能值。此字段为只读。
二、属性
Date 获取此实例的日期部分。
Day 获取此实例所表示的日期为该月中的第几天。
DayOfWeek 获取此实例所表示的日期是星期几。
DayOfYear 获取此实例所表示的日期是该年中的第几天。
Hour 获取此实例所表示日期的小时部分。
Kind 获取一个值,该值指示由此实例表示的时间是基于本地时间、协调世界时 (UTC),还是两者皆否。
Millisecond 获取此实例所表示日期的毫秒部分。
Minute 获取此实例所表示日期的分钟部分。
Month 获取此实例所表示日期的月份部分。
Now 静态,获取一个 DateTime 对象,该对象设置为此计算机上的当前日期和时间,表示为本地时间。
Second 获取此实例所表示日期的秒部分。
Ticks 获取表示此实例的日期和时间的计时周期数。
TimeOfDay 获取此实例的当天的时间。
Today 静态,获取当前日期。
UtcNow 静态,获取一个 DateTime 对象,该对象设置为此计算机上的当前日期和时间,表示为协调世界时 (UTC)。
Year 获取此实例所表示日期的年份部分。

static void Main(string[] args)
{
Console.WriteLine(DateTime.MaxValue); //输出 9999/12/31 23:59:59
Console.WriteLine(DateTime.MinValue); //输出 0001/1/1 0:00:00 DateTime dt = DateTime.Now; //获取当前时间
Console.WriteLine(dt); //输出 2013/3/2 12:47:12 DateTime dt1 = DateTime.Today; //获取当前日期
Console.WriteLine(dt1); //输出 2013/3/2 0:00:00 DateTime dt2 = DateTime.UtcNow; //获取国际标准时间
Console.WriteLine(dt2); //输出 2013/3/2 4:50:14 Console.WriteLine(dt.Date); //输出 2013/3/2 0:00:00 DateTime的日期部分
Console.WriteLine(dt.Day); //输出 2 一个月的第几天,也就是今天是几号
Console.WriteLine(dt.DayOfWeek); //输出 Saturday 星期几
Console.WriteLine(dt.DayOfYear); //输出 61 今天是该年中的第几天
Console.WriteLine(dt.Hour); //输出 12 现在是几点
Console.WriteLine(dt.Kind); //输出 Local 指示此实例表示的时间是基于本地时间、协调世界时 (UTC),还是两者皆否。
Console.WriteLine(dt.Millisecond); //输出 720 毫秒部分
Console.WriteLine(dt.Minute); //输出 57 分钟部分
Console.WriteLine(dt.Month); //输出 3 月份
Console.WriteLine(dt.Second); //输出 27 秒数
Console.WriteLine(dt.Ticks); //输出 634978260185598529
Console.WriteLine(dt.TimeOfDay); //输出 13:01:47.3999343
Console.WriteLine(dt.Year); //输出 2013 Console.ReadKey();
}

三、方法
Add 将指定的 TimeSpan 的值加到此实例的值上。
AddDays 将指定的天数加到此实例的值上。
AddHours 将指定的小时数加到此实例的值上。
AddMilliseconds 将指定的毫秒数加到此实例的值上。
AddMinutes 将指定的分钟数加到此实例的值上。
AddMonths 将指定的月份数加到此实例的值上。
AddSeconds 将指定的秒数加到此实例的值上。
AddTicks 将指定的计时周期数加到此实例的值上。
AddYears 将指定的年份数加到此实例的值上。
Compare 对两个 DateTime 的实例进行比较,并返回一个指示第一个实例是早于、等于还是晚于第二个实例的整数。
CompareTo 已重载。 将此实例的值与指定的 DateTime 值相比较,并指示此实例是早于、等于还是晚于指定的 DateTime 值。
DaysInMonth 返回指定年和月中的天数。
Equals 已重载。 返回一个值,该值指示两个 DateTime 对象,或者一个 DateTime 实例和另一个对象或 DateTime 是否相等。
FromBinary 反序列化一个 64 位二进制值,并重新创建序列化的 DateTime 初始对象。
FromFileTime 将指定的 Windows 文件时间转换为等效的本地时间。
FromFileTimeUtc 将指定的 Windows 文件时间转换为等效的 UTC 时间。
FromOADate 返回与指定的 OLE 自动化日期等效的 DateTime。
GetDateTimeFormats 已重载。 将此实例的值转换为标准 DateTime 格式说明符支持的所有字符串表示形式。
GetHashCode 返回此实例的哈希代码。 (重写 ValueType..::.GetHashCode()()()。)
GetTypeCode 返回值类型 DateTime 的 TypeCode。
IsDaylightSavingTime 指示此 DateTime 实例是否在当前时区的夏时制范围内。
IsLeapYear 返回指定的年份是否为闰年的指示。
Parse 已重载。 将日期和时间的指定字符串表示形式转换为其等效的 DateTime。
ParseExact 已重载。 将日期和时间的指定字符串表示形式转换为其等效的 DateTime。字符串表示形式的格式必须与指定的格式完全匹配,否则会引发异常。
SpecifyKind 创建新的 DateTime 对象,该对象表示与指定的 DateTime 相同的时间,但是根据指定的 DateTimeKind 值的指示,指定为本地时间或协调世 界时 (UTC),或者两者皆否。
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)。
TryParse 已重载。 将日期和时间的指定字符串表示形式转换为其 DateTime 等效项,并返回一个指示转换是否成功的值。
TryParseExact 已重载。 将日期和时间的指定字符串表示形式转换为其等效的 DateTime。字符串表示形式的格式必须与指定的格式完全匹配。该方法返回一 个指示转换是否成功的值。
示例:

static void Main(string[] args)
{
DateTime dt = DateTime.Now; // 2013/3/2 13:13:27
DateTime dt1 = dt.AddDays(10);
Console.WriteLine(dt1); // 2013/3/12 13:13:27 //留意到新的日期已经加了10天 DateTime dt2 = dt.AddHours(10);
Console.WriteLine(dt2); // 2013/3/2 23:13:27 //留意到新的日期已经加了10天
DateTime dt3 = dt.AddHours(12); //加多两个小时,让它超过24
Console.WriteLine(dt3); // 2013/3/3 1:13:27 //留到会自动增加一天 //下面5个都是类似 //AddMilliseconds 将指定的毫秒数加到此实例的值上。
//AddMinutes 将指定的分钟数加到此实例的值上。
//AddMonths 将指定的月份数加到此实例的值上。
//AddSeconds 将指定的秒数加到此实例的值上。
//AddYears 将指定的年份数加到此实例的值上。
DateTime dt4 = dt.AddDays(1);
int i = DateTime.Compare(dt,dt4); //第一个参数 早于 -1 等于 0 晚于1 第二个参数 静态版
Console.WriteLine(i); //输出 -1 int j = dt.CompareTo(dt4); //调用者比参数早 -1 等0 晚 1
Console.WriteLine(j); // 输出 -1 int days = DateTime.DaysInMonth(2011,2); //某年某月有多少天
Console.WriteLine(days); // 输出 28 long FTime = dt.ToFileTime();
Console.WriteLine(FTime); //输出 130066782813286694 windows文件时间 DateTime dt5 = DateTime.FromFileTime(130066782813286694); //windows文件时间转回DateTime
Console.WriteLine(dt5); //输出 2013/3/2 14:11:21 //以下几个都是类似的,不再多写
//FromBinary 反序列化一个 64 位二进制值,并重新创建序列化的 DateTime 初始对象。
//FromFileTimeUtc 将指定的 Windows 文件时间转换为等效的 UTC 时间。
//FromOADate 返回与指定的 OLE 自动化日期等效的 DateTime。
//ToBinary 将当前 DateTime 对象序列化为一个 64 位二进制值,该值随后可用于重新创建 DateTime 对象。
//ToFileTimeUtc 将当前 DateTime 对象的值转换为 Windows 文件时间。
//ToOADate 将此实例的值转换为等效的 OLE 自动化日期。 DateTime dt6 = dt.ToLocalTime();
Console.WriteLine(dt6); //本来就是本地时间 Console.WriteLine(dt.ToLongDateString()); //输出 2013年3月2日 短日期字符串表示形式
Console.WriteLine(dt.ToLongTimeString()); //输出 14:52:33 短时间字符串表示形式 Console.WriteLine(dt.IsDaylightSavingTime()); //False DateTime实例是否在当前时区的夏时制范围内
Console.WriteLine(DateTime.IsLeapYear(2013)); //False 是否是闰年 string str = "2012-12-12";
DateTime dt7 = DateTime.Parse(str); //此转换方法如果转换不成功会报错
Console.WriteLine(dt7); //输出 2012/12/12 0:00:00 DateTime dt8;
DateTime.TryParse(str,out dt8); //此方法的好处是,转换不成功也不会报错
Console.WriteLine(dt8); //输出 2012/12/12 0:00:00 string dateTimeString = "2008年09月12日 15点14分56秒";
DateTime dt9 = DateTime.ParseExact(dateTimeString, "yyyy年MM月dd日 HH点mm分ss秒", null); //按照指定的格式来转换为一个时间对象,这方法不错
Console.WriteLine(dt9); //输出 2008/9/12 15:14:56 DateTime dt10;
DateTime.TryParseExact(dateTimeString, "yyyy年MM月dd日 HH点mm分ss秒",null,System.Globalization.DateTimeStyles.None,out dt10); //按照指定的格式来转换为一个时间对象,这方法不错
Console.WriteLine(dt10); //输出 2008/9/12 15:14:56 Console.WriteLine(dt.ToUniversalTime()); //输出 2013/3/2 7:12:26 转换为国际时间 //yyyyMMdd hhmmss
Console.WriteLine(dt.GetDateTimeFormats('s')[0].ToString()); //输出 2013-03-02T15:25:26
Console.WriteLine(dt.GetDateTimeFormats('t')[0].ToString()); //输出 15:18
Console.WriteLine(dt.GetDateTimeFormats('y')[0].ToString()); //输出 2013年3月
Console.WriteLine(dt.GetDateTimeFormats('D')[0].ToString()); //输出 2013年3月2日
Console.WriteLine(dt.GetDateTimeFormats('D')[1].ToString()); //输出 2013年3月2日 ,星期六
Console.WriteLine(dt.GetDateTimeFormats('D')[2].ToString()); //输出 星期六,2013年3月2日
Console.WriteLine(dt.GetDateTimeFormats('M')[0].ToString()); //输出 3月2日
Console.WriteLine(dt.GetDateTimeFormats('f')[0].ToString()); //输出 2013年3月2日 15:36
Console.WriteLine(dt.GetDateTimeFormats('g')[0].ToString()); //输出 2013/3/2 15:36
Console.WriteLine(dt.GetDateTimeFormats('r')[0].ToString()); //输出 Sat, 02 Mar 2013 15:28:10 GTM Console.WriteLine(dt.ToString("yyyy*MM*dd")); //输出2013*03*02 ToString()方法被重写了 TypeCode c = dt.GetTypeCode();
Console.WriteLine(c.ToString()); //输出 DateTime DateTime dt11 = DateTime.SpecifyKind(dt, DateTimeKind.Local); //根据一个DateTime创建一个新的时间,枚举指定类型本地时间或协调世界时 (UTC),或者两者皆否。
Console.WriteLine(dt11); //输出 2013/3/2 15:32:33 //DateTime dt12 = dt.AddTicks(1000000000 * 60); //100纳秒为单位
//Console.WriteLine(dt12); DateTime dt13 = DateTime.Now.AddDays(10);
TimeSpan ts = dt13.Subtract(dt);
Console.WriteLine(ts); //输出 10.00:00:00...... TimeSpan ts1 = new TimeSpan(1,0,0,0); //创建一个TimeSpan对象,1天0时0分0秒
DateTime dt14 = dt.Add(ts1);
Console.WriteLine(dt14); //输出 2013/3/3 15:32:33 留意到日期里多了一天 DateTime dt15 = dt.Subtract(ts1);
Console.WriteLine(dt15); //输出 2013/3/1 15:32:33 留意到日期少了一天 Console.ReadKey();
}

四、实例,计算两个时间差
下面给出根据两个DateTime计算时间差的实例:
DateTime dt = DateTime.Now();
TimeSpan ts = new TimeSpan(dt.Ticks);
TimeSpan tsLast = new TimeSpan(dtLast.Ticks);
TimeSpan tsDisparity = ts.Subtract(tsLast).Duration();
C# DateTime类,TimeSpan类的更多相关文章
- 输入某人出生日期(以字符串方式输入,如1987-4-1)使用DateTime和TimeSpan类,(1)计算其人的年龄;(2)计算从现在到其60周岁期间,总共多少天。
http://blog.csdn.net/w92a01n19g/article/details/8764116 using System;using System.Collections.Generi ...
- 求计算两个时间的差(DateTime类和TimeSpan类)
日期时间数据是项目设计过程中经常需要处理的信息,C#提供了DateTime类和TimeSpan类来处理日期时间数据.下面介绍说明Datetime类和TimeSpan类的使用 //初始化DateTime ...
- C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;
ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口: 2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...
- 日期类时间类,日期时间类,单例模式,装箱与拆箱,数字类随机数,BigDecimal总结
1.日期类,时间类,日期时间类 初步日期使用方法及格式转换方法(旧方法): 格式://Mon Jul 30 11:26:05 CST 2018 年月日时分秒 CST代表北 ...
- 【C# IO 操作】 Path 路径类 |Directory类 |DirectoryInfo 类|DriveInfo类|File类|FileInfo类|FileStream类
Directory类 Directory类 是一个静态类,常用的地方为创建目录和目录管理. 一下来看看它提供的操作. 1.CreateDirectory 根据指定路径创建目录.有重载,允许一次过创建多 ...
- 初识UML类图--类之间关系
前言 最近有打算学习一下设计模式,所以就去看了园子里面左潇龙大哥的设计模式文章,看完之后只有一个感觉,我啥时候也能写出来这么牛逼的文章啊,但是我这语文老师死的早的人还是算了,但是设计模式还是要学的,这 ...
- [.net 面向对象编程基础] (9) 类和类的实例
[.net 面向对象编程基础] (9) 类和类的实例 类 ,顾名思义就是分类.类别的意思.我们要面向对象编程,就需要对不同的事物进行分类.类可以说是.net面向对象的核心. 类:就是具有相同的属性和功 ...
- java异常处理:建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如new Bank(100),
建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount ...
- 19 BasicTaskScheduler0 基本任务调度类基类(一)——Live555源码阅读(一)任务调度相关类
这是Live555源码阅读的第二部分,包括了任务调度相关的三个类.任务调度是Live555源码中很重要的部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/ol ...
- 日期操作类--GregorianCalendar类
GregorianCalendar--API JavaTM Platform Standard Ed. 6 GregorianCalendar类 Calendar类实现了公历日历,GregorianC ...
随机推荐
- Flash型单片机的加密与解密
厂商利用单片机进行产品开发时,都会关心其代码和数据的保密性.考虑到用户在编写和调试代码时所付出的时间和精力,代码的成本是不言而喻的. 早期的单片机,代码是交给芯片制造商制成掩膜ROM.有两种加密 ...
- Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解
俗话说:“十五的月亮十六圆”.那学习是不是也是如此呢?如果把月亮看成是我们的愿望,那十五便是我们所处的“高原期”,坚持迈过这个坎,我相信你的愿望终究会现实的.记得马云曾说:今天很残酷,明天更残酷,后天 ...
- bzoj1751 [Usaco2005 qua]Lake Counting
1751: [Usaco2005 qua]Lake Counting Time Limit: 5 Sec Memory Limit: 64 MB Submit: 168 Solved: 130 [ ...
- 【转】linux文件系统之mount流程分析
本质上,Ext3 mount的过程实际上是inode被替代的过程. 例如,/dev/sdb块设备被mount到/mnt/alan目录.命令:mount -t ext3 /dev/sdb /mnt/al ...
- 在Struts2中使用Uploadify组件上传文件
Uploadify是一个基于Jquery的文件上传组件,官网http://www.uploadify.com/可以在官网获得该组件,运行演示示例,下载帮助文档. 作为Web前端的增强技术,Jq ...
- web前端 - 模态对话框
代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- fragment的入门DEMO
效果图: 代码如下: 1.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- Android FragmentActivity onActivityResult冲突问题
场景:假设fragment的填充数据是ListView,ListView中的每一项都有button,点击每一项的button跳转到B界面.在B界面处理完业务需返回fragment中更新数据. 解决方式 ...
- POJ 1987 BZOJ 3365 Distance Statistics 树的分治(点分治)
题目大意:(同poj1741,刷一赠一系列) CODE: #include <cstdio> #include <cstring> #include <iostream& ...
- sqlserver中几种典型的等待
为了准备今年的双11很久没有更新blog,在最近的几次sqlserver问题的排查中,总结了sqlserver几种典型的等待类型,类似于oracle中的等待事件,如果看到这样的等待类型时候能够迅速定位 ...