DateTime时间类型的一些常用方法
一、DateTime 的构造函数(12个构造重载)
DateTime time = new DateTime();
* 1.DateTime(Int64)
:将 DateTime 结构的新实例初始化为指定的刻度数。
* 2.DateTime(Int64, DateTimeKind)
:将 DateTime 结构的新实例初始化为指定的计时周期数以及协调世界时 (UTC) 或本地时间。
* 3.DateTime(Int32, Int32, Int32)
:将 DateTime 结构的新实例初始化为指定的年、月和日。
* 4.DateTime(Int32, Int32, Int32, Calendar)
:将 DateTime 结构的新实例初始化为指定日历的指定年、月和日。
* 5.DateTime(Int32, Int32, Int32, Int32, Int32, Int32)
:将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟和秒。
* 6.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)
:将 DateTime 结构的新实例初始化为指定年、月、日、小时、分钟、秒和协调世界时 (UTC) 或本地时间。
* 7.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar)
:将 DateTime 结构的新实例初始化为指定日历的年、月、日、小时、分钟和秒。
* 8.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)
:将 DateTime 结构的新实例初始化为指定的年、月、日、小时、分钟、秒和毫秒。
* 9.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)
:将 DateTime 结构的新实例初始化为指定年、月、日、小时、分钟、秒、毫秒和协调世界时 (UTC) 或本地时间。
* 10.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)
:将 DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟、秒和毫秒。
* 11.DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)
:将 DateTime 结构的新实例初始化为指定日历的指定年、月、日、小时、分钟、秒、毫秒和协调世界时 (UTC) 或本地时间。
应用:
比如我要得到本月一号的时间可以这样写:
DateTime time = new DateTime(DateTime.Now.Year,DateTime.Now.Month,01); //2020/11/1 0:00:00
上个月的一号:
DateTime time = new DateTime(DateTime.Now.Year,DateTime.Now.Month,01).AddMonths(-1); //2020/10/1 0:00:00
二、 YYYY-mm-dd HH:MM:SS解释
输出:2020:11:06 11:20:51
DateTime t = DateTime.Now; Console.WriteLine(t.ToString("yyyy:MM:dd HH:mm:ss"));
y 不包含纪元的年份。不具有前导零。
yy 不包含纪元的年份。具有前导零。
yyyy 包括纪元的四位数的年份。
M 月份数字。一位数的月份没有前导零。
MM 月份数字。一位数的月份有一个前导零。
MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
MMMM 月份的完整名称,在 MonthNames 中定义。
d 月中的某一天。一位数的日期没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
dddd 周中某天的完整名称,在 DayNames 中定义。
h 12 小时制的小时。一位数的小时数没有前导零。
hh 12 小时制的小时。一位数的小时数有前导零。
H 24 小时制的小时。一位数的小时数没有前导零。
HH 24 小时制的小时。一位数的小时数有前导零。
m 分钟。一位数的分钟数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
s 秒。一位数的秒数没有前导零。
ss 秒。一位数的秒数有一个前导零。
f 秒的小数精度为一位。其余数字被截断。 如果时间为2013-05-20 14:02:30 yyyy-MM-dd HH:mm:ss ;如果格式为yyyy-MM-dd hh:mm:ss 则显示为2013-05-20 02:02:30
gg 时期或纪元。
三、 比较时间
1、例如有个需求是开始时间与结束时间不能超过1天,你会这么判断?
解决方法:
可以使用c#提供的方法TotalHours来解决
DateTime time1 = DateTime.Now; DateTime time2 = DateTime.Now.AddDays(1); if ((time2 - time1).TotalHours<=24) { }
两个时间的差值还有很多方法:可以根据需求具体使用
四、 时间转换成星期
1、给你一个时间,判断是星期几?
可以使用 DateTime.Now.DayOfWeek ,DayOfWeek输出的是英文的星期几,如果要显示中文,我们可以写一个枚举
public enum Week { 星期天 = 0, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六 }
然后把DayOfWeek强转成Week枚举类型
var t = DateTime.Now.DayOfWeek; Console.WriteLine((Week)t);
结果输出具体的中文星期几