从时区datetime转换为短日期C#
我有这样的日期时间数据:从时区datetime转换为短日期C#,c#,datetime,datetime-format,timezone-offset,C#,Datetime,Datetime Format,Timezone Offset,我有这样的日期时间数据:2018-06-29T22:10:33Z 我需要短日期格式-2018年6月29日 我在C#中尝试了以下方法: 两者都有错误 我使用dateString.substring(0,10)获取前10个字符并将其转换为日期 有更好的方法吗?您可以使用DateTime.TryParse方法。即: string s = "2018-06-29T22:10:33Z"; DateTime t; if (DateTime.TryParse(s, out t)) { Console.
2018-06-29T22:10:33Z
我需要短日期格式-2018年6月29日
我在C#中尝试了以下方法:
两者都有错误
我使用dateString.substring(0,10)
获取前10个字符并将其转换为日期
有更好的方法吗?您可以使用DateTime.TryParse方法。即:
string s = "2018-06-29T22:10:33Z";
DateTime t;
if (DateTime.TryParse(s, out t))
{
Console.WriteLine(t.ToShortDateString());
}
要获取UTC日期,请执行以下操作:
string s = "2018-06-29T22:10:33Z";
DateTime t;
if (DateTime.TryParse(s, out t))
{
Console.WriteLine(t.ToUniversalTime().ToShortDateString());
}
首先也是最重要的是,日期格式似乎没有很好地格式化。您应该收到的格式应该是“yyyy-MM-ddTHH:MM:ss.FFFFFFF K”(即“2018-06-29T22:10:05.1440844Z”) 假设所提供的示例日期中存在键入错误,下面是将日期时间字符串(UTC格式)转换为日期时间的两个示例:
var dateString = "2018-06-29T22:10:05.1440844Z";
var datetime = DateTime.ParseExact(dateString, "yyyy-MM-ddTHH:mm:ss.fffffffK", CultureInfo.InvariantCulture);
var date = datetime.Date;
或
您必须考虑获得UTC日期,并且必须考虑时区转换。此外,当只使用日期部分时,时间部分设置为“12:00:00 AM”。“22:1033”是一种非常奇怪的格式。它真的在分和秒之间没有第二个冒号吗?你知道它是否总是在UTC,或者有时可能会有UTC偏移量而不是Z吗?我的错。事实上还有第二个冒号。这始终是我在数据中遇到的时间戳。错误是什么?因为
Parse
方法对我有效。如果DateTime.Parse
不起作用,那么DateTime.TryParse
@AstroRP也不会起作用。我没有说过,TryParse在错误处理方面有优势。@AstroRP:没错。我也试过TryParse。问题似乎是源日期时间可能是非标准的,因为我在MSDN文档中也没有看到它。@GVashist,它是标准的,您只是在秒部分之前没有冒号。@GVashist,您的意思是获取UTC日期吗?我正在为此添加代码。
var dateString = "2018-06-29T22:10:05.1440844Z";
var datetime = DateTime.ParseExact(dateString, "yyyy-MM-ddTHH:mm:ss.fffffffK", CultureInfo.InvariantCulture);
var date = datetime.Date;
var datetime = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture);
var date = datetime.Date;