这些资料是我学习的时候在网络上寻找到的,发布出来希望对大家有帮助,一起努力前进,嘿嘿......Microsoft C#规范 2.0 版 GFC用户提交

feedsky 抓虾 pageflakes google reader my yahoo bloglines 鲜果 有道 http://wap.feedsky.com/bliplink

DateTime表示时间上的一刻,通常以日期和当天的时间表示。

DateTime表示时间上的一刻,通常以日期和当天的时间表示。

 

DateTime 值类型表示值范围在公元(基督纪元)0001 1 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间

时间值以 100 毫微秒为单位(该单位称为刻度)进行计量,而特定日期是自 GregorianCalendar 日历中公元 (C.E.) 0001 1 1 日午夜 12:00 以来的刻度数。例如,刻度值 31241376000000000L 表示 0100 1 1 日(星期五)午夜 12:00:00DateTime 值始终在显式或默认日历的上下文中表示。

版本注意事项

.NET Framework 2.0 版以前,DateTime 结构包含一个 64 位字段,该字段由一个未使用的 2 位字段和一个私有字段 Ticks 串联组成,Ticks 字段是一个 62 位无符号字段,其中包含表示日期和时间的刻度数。Ticks 字段的值可通过 Ticks 属性获取。

.NET Framework 2.0 开始,DateTime 结构包含一个由私有字段 Kind Ticks 字段串联组成的 64 位字段。Kind 字段是一个 2 位字段,它指示 DateTime 结构是表示本地时间、协调通用时间 (UTC) 还是 UTC 和本地时间都未指定。Kind 字段用于处理本地时间和 UTC 时间之间的转换,但不用于时间的比较或算术运算。Kind 字段的值可通过 Kind 属性获取。

DateTime

DateTime 类型的时间值描述通常使用协调通用时间 (UTC) 标准来表达,它是格林威治标准时间 (GMT) 的国际识别名。协调通用时间是在经度零度(即 UTC 原点)测量到的时间。夏时制不适用于 UTC

本地时间是相对于特定时区而言。时区与时区偏移量关联,它是时区从 UTC 原点算起的以小时为单位的偏移量。此外,本地时间有可能受夏时制影响,夏时制会对日长增加或减少一小时。因此,本地时间的计算是将时区偏移量加上 UTC,如有必要,再根据夏时制进行调整。UTC 原点的时区偏移量为零。

UTC 时间适合于计算、比较日期和时间,以及将日期和时间存储在文件中。本地时间适合于在用户界面中显示。

如果 DateTime 对象的 Kind 属性为 Unspecified,则其未指定表示的时间为本地时间还是 UTC 时间(由程序员来决定是表示本地时间还是 UTC 时间---我加的注释。各个 DateTime 成员针对该成员相应地处理未指定的时间(如果程序员决定是表示本地时间,则年、月、日就是本地的年、月、日;如果程序员决定是表示UTC 时间,则年、月、日就是UTC 时间的年、月、日。---我加的注释

DateTime 操作

使用 DateTime 结构的计算(如 Add Subtract)不会修改该结构的值。相反,计算会返回新的 DateTime 结构,其值为计算结果。

本地时间和 UTC 时间之间的转换运算会考虑夏时制,但是算术和比较运算无需考虑。

DateTime 对象的计算和比较仅当这些对象表示同一时区中的时间时才有意义。因此,如果没有为 DateTime 对象指定时区,则假设开发人员有某种外部机制(如显式变量或策略)可用于确定创建该对象所在的时区。

每个 DateTime 成员都隐式使用公历执行其操作,例外是指定日历的构造函数以及使用从 IFormatProvider 派生的参数(如 System.Globalization.DateTimeFormatInfo)的方法,该参数隐式指定日历。

DateTime 类型中的成员所执行的运算会考虑闰年和月中天数等细节。

DateTime TimeSpan

DateTime 值类型与 TimeSpan 值类型的差异在于 DateTime 表示时间上的一刻,而 TimeSpan 表示时间间隔。例如,这表示您可以从 DateTime 的一个实例减去另一个实例来获得它们之间的时间间隔。也可以将正的 TimeSpan 加到当前的 DateTime 来计算将来的日期。

可以向 DateTime 对象增加或减少一个时间间隔。时间间隔可为负,也可为正,可以用刻度或秒等为单位表示,也可表示为 TimeSpan 对象。

COM Interop 注意事项

一个 DateTime 值传输到 COM 应用程序,然后传回托管应用程序,这称为往返。但是,仅指定时间的 DateTime 值不会按预期的那样往返。

如果只往返时间,比方说下午 3 点,则最终的日期和时间为公元 1899 12 30 日的下午 3:00,而不是公元 0001 1 1 日的下午 3:00。之所以发生此情况是因为当仅指定时间时,.NET Framework COM 都采用默认日期。然而,COM 系统采用的基准日期是公元 1899 12 30 日,而 .NET Framework 采用的基准日期是公元 0001 1 1 日。

当只有时间从 .NET Framework 传递到 COM 时,其间执行了特殊的处理,将时间转换为 COM 所使用的格式。当只有时间从 COM 传递到 .NET Framework 时,则不执行特殊处理,因为这会破坏 1899 12 30 日当天或之前的合法日期和时间。这还意味着,如果日期从 COM 开始往返,则 .NET Framework COM 保留该日期。

.NET Framework COM 的这一行为意味着如果您的应用程序往返的 DateTime 仅指定了时间,则您的应用程序必须记得修改或忽略来自最终的 DateTime 对象的错误日期。

实现的接口

此类型实现接口 IComparableIComparableIFormattable IConvertible。使用 Convert 类进行转换,而不是使用此类型的 IConvertible 显式接口成员实现。

 

 

Ticks 字段本身是一个无意义 62 位无符号字段, Kind = LocalTicks 字段的值表示的时间为本地时间, 从本地0001 1 1 日午夜 12:00:00 起。Kind = Utc,Ticks 字段表示的时间为 UTC时间,从格林威治0001 1 1 日午夜 12:00:00起。Kind = Unspecified,表示的时间既未指定为本地时间,也未指定为协调通用时间 (UTC),由程序员来决定Ticks 字段表示的时间是表示本地时间还是 UTC 时间。

本地时间 =协调通用时间 (UTC) + 时区偏移量

日历将时间按单位(如星期、月和年)划分。

每种日历中分成的段数、段的长度和起始点均不相同。

使用特定日历可以将任何时刻都表示为一组数值。例如,某次春分发生在公历的 (1999, 3, 20, 8, 46, 0, 0.0),即公元 1999 3 20 8:46:00:0.0Calendar 的实现可以将特定日历范围内的任何日期映射到一个类似的数值集,并且 DateTime 可以使用 Calendar DateTimeFormatInfo 中的信息将这些数值集映射为一种文本表示形式。文本表示形式既可以是区分区域性的(例如,按照 en-US 区域性表示的“8:46 AM March 20th 1999 AD”),也可以是不区分区域性的(例如,以 ISO 8601 格式表示的“1999-03-20T08:46:00”)。

一个 Calendar 实现可定义一个或多个纪元。Calendar 类将纪元标识为枚举的整数,其中当前纪元 (CurrentEra) 的值为 0

闰年与标准历年的天数不同,这是为了弥补日历年与地球绕太阳旋转的实际时间或日历年与月亮绕地球旋转的实际时间之间的差距。各个 Calendar 实现分别对闰年作出了不同的定义。

为一致起见,每个时间间隔中的第一个单元(例如第一个月)被赋予值 1

 

public DateTime ( int year,  int month,   int day,   Calendar calendar)

calendaryear,month,day 将转化为公历存入Ticks 字段


友情链接

郑州大学软件学院 SpringWidgets-Blogger 徵信社 翻译公司 链接帮手网 行驶证字体 酷站目录 Friend Connectified