在中
C#,提供了许多方法将包含多种格式的日期时间的字符串转换为统一
DateTime对象。这些方法可以识别很多标准日期时间格式,如果您与它们不同,您甚至可以提供自己的格式。
DateTime.Parse()
-将字符串转换为DateTime
对象。如果 *** 作失败,它将引发异常。DateTime.TryParse()
- 仅在可能时 将字符串转换为DateTime
对象。如果成功则返回,如果失败则返回。 __true``false
DateTime.TryParseExact()
-将指定格式的字符串转换为DateTime
对象。true
如果成功则返回,false
否则返回。
在您的情况下,您可以这样使用
DateTime.TryParse()(
DateTime.Parse()除非您绝对确定格式正确,否则建议使用简单的做法,而不是简单地使用它):
var dtStr1 = " 2019. 09. 23. 14:54:23";var dtStr2 = "2019.09.23 14:54:23";var dtStr3 = "2019-09-23 14:54:23";DateTime.TryParse(dtStr1, out DateTime dt1);DateTime.TryParse(dtStr2, out DateTime dt2);DateTime.TryParse(dtStr3, out DateTime dt3);
一旦转换为
DateTime对象,它就不再具有与之关联的格式。这是个
structure,因此只有成员变量和方法。因此,要计算总时数等,可以使用提供的方法。
假设您要计算一天工作开始到结束之间的时间。您可以将它们转换为
DateTime对象,然后从其他对象中减去一个对象,这将为您提供一个
TimeSpam对象。
var dtStrStart = "2019.09.23 08:23:12";var dtStrEnd = "2019.09.23 16:17:28";DateTime.TryParse(dtStrStart, out DateTime dtStart);DateTime.TryParse(dtStrEnd, out DateTime dtEnd);var diff = dtEnd - dtStart;
现在
TimeSpan,
diff此处的对象将为您提供一堆具有小时,分钟等差异的属性。
的
TimeSpan.Days,
TimeSpan.Minutes等会给你在天,分钟等时间
Console.WriteLine(diff.Days);Console.WriteLine(diff.Hours);Console.WriteLine(diff.Minutes);Console.WriteLine(diff.Seconds);Console.WriteLine(diff.Milliseconds);
输出:
0
7
54
16
0
在
TimeSpan.TotalMinutes等会给你在各个单元的整个时间段。
Console.WriteLine(diff.TotalDays);Console.WriteLine(diff.TotalHours);Console.WriteLine(diff.TotalMinutes);Console.WriteLine(diff.TotalSeconds);Console.WriteLine(diff.TotalMilliseconds);
输出:
0.329351851851852
7.90444444444444
474.266666666667
28456
28456000
相反,当您在数据库中存储数据时,必须再次使用标准格式,例如
datetime或
datetime2。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)