代码拉取完成,页面将自动刷新
using System;
//DateTime和DateTimeOffset表示日期或者时间的不可变结构。它们的最小单位为100纳秒,值的范围从0001年到9999年。
//DateTimeOffset是从Framework 3.5开始引入的,在功能上类似于DateTime。它的主要特性是能够存储UTC偏移值,这允许我们在比较不同时区的时间值得到更有意义的结果。
//DateTime和DateTimeOffset的选择
//DateTime和DateTimeOffset在处理时区的方式上是不同的。DateTime具有三个状态标记,可表示DateTime是否与下列因素相关:
// 当前计算机的本地时间
// UTC(相当于现代的格林威治时间)
// 不确定
//DateTimeOffset更加特殊——它将UTC的偏移量存储为一个TimeSpan:
// July 01 2007 03:00:00 -06:00
//这会影响等值比较结果,而且是在DateTime和DateTimeOffset之间进行选择的主要依据。特别是:
// DateTime会忽略三个比较状态标记,并且当两个值的年、月、日、时、分等相同时就认为它们是相等的。
// 如果两个值引用相同的时间点,那么DateTimeOffset就认为它们是相等的。
//提示:夏时制会使这个结果差别很大,即使应用程序不需要处理多个地理时区。
//所以:DateTime会认为下面两个值是不相同的,而DateTimeOffset则认为是相同的:
// July 01 2007 09:00:00 +00:00 (GMT)
// July 01 2007 03:00:00 -06:00 (local time, Central America)
//2.创建一个DateTime
//DateTime定义了能够接受年、月和日以及可选的时、分、秒和毫秒的构造方法。
/*
public DateTime(int year, int month, int day);
public DateTime(int year, int month, int day, int hour, int minute, int seond, int millisecond);
*/
//如果只指定日期,那么时间会被隐含地设置为半夜时间(0:00)
//3.创建一个DateTimeOffset
//DateTimeOffset具有类似的构造方法。其区别是还需要指定一个TimeSpan类型的UTC偏移值:
/*
public DateTimeOffset (int year, int month, int day, int hour, int minute, int second, TimeSpan offset);
public DateTimeOffset(int year, int month, int day, int hour, int minute, int second, int millisecond, TimeSpan offset);
*/
//TimeSpan必须刚好是整数分钟,否则函数会抛出一个异常。
/*
public DateTimeOffset(DateTime dateTime);
public DateTimeOffset(DateTime dateTime, TimeSpan offset);
*/
namespace _158_日期和时间_DateTime和DateTimeOffset
{
class Program
{
static void Main(string[] args)
{
DateTime d = new DateTime(5767, 1, 1, new System.Globalization.HebrewCalendar());
Console.WriteLine(d); // 12/12/2006 12:00:00 AM
//从DateTime隐式转换到DateTimeOffset是很简单的
//DateTimeOffset dt = new DateTime(2000, 2, 3);
//4.当前的DateTime/DateTimeOffset
//DateTime和DateTimeOffset都具有一个静态的Now属性,它会返回当前的日期和时间:
Console.WriteLine(DateTime.Now);
Console.WriteLine(DateTimeOffset.Now);
//DateTime也具有Today属性,它返回日期部分:
Console.WriteLine(DateTime.Today);
//静态的Utcnow属性会返回以UTC表示的当前日期和时间:
Console.WriteLine(DateTime.UtcNow);
Console.WriteLine(DateTimeOffset.UtcNow);
//5.处理日期和时间
//DateTime和DateTimeOffset提供返回各种日期/时间的类似实例属性:
DateTime dt = new DateTime(2000, 2, 3, 10, 20, 30);
Console.WriteLine(dt.Year); //2000
Console.WriteLine(dt.Month); //2
Console.WriteLine(dt.Day); //3
Console.WriteLine(dt.DayOfWeek); //Thursday
Console.WriteLine(dt.DayOfYear); //34
Console.WriteLine(dt.Hour); //10
Console.WriteLine(dt.Minute); //20
Console.WriteLine(dt.Second); //30
Console.WriteLine(dt.Millisecond);//0
Console.WriteLine(dt.Ticks); //630851700300000000
Console.WriteLine(dt.TimeOfDay); //10:20:30 返回一个TimeSpan值
//DateTimeOffset也有一个类型为TimeSpan的Offset属性
TimeSpan ts = TimeSpan.FromMinutes(90);
Console.WriteLine(dt.Add(ts));
Console.WriteLine(dt+ts);
DateTime thisYear = new DateTime(2007, 1, 1);
DateTime nextYear = thisYear.AddYears(1);
TimeSpan oneYear = nextYear - thisYear;
//6.格式化和解析
//警告:如果文化设置与格式化发生时差别很大,那么DateTimes和DateTimeOffset可能会解析出错。可以通过使用ToString及一个忽略文化设置的格式化字符串来避免这个问题(例如:“o”)
DateTime dt1 = DateTime.Now;
string cannotBeMisparsed = dt1.ToString("o");
DateTime dt2 = DateTime.Parse(cannotBeMisparsed);
//7.DateTime和DateTimeOffset空值:
//因为DateTime和DateTimeOffset是结构体,它们是不可为空的。
//当需要将它们设置为空时,可以使用以下两种方法:
// 使用一个Nullable类型值(例如:DateTime?或DateTimeOffset?)
// 使用静态域DateTime.MinValue或DateTimeOffset.MinValue(这些默认值)
Console.ReadKey();
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。