从时区日期时间转换为短日期 C#

Convert from timezone datetime to short date C#

我有这样的日期时间数据:2018-06-29T22:10:33Z

我需要短日期格式 - 06/29/2018 即没有时间部分。

我在 C# 中尝试了以下方法:

ConvertToDateTime(dateString);
DateTime.Parse(dateString);

两者都有错误。

我正在求助于 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.fffffffK"(即“2018-06-29T22:10:05.1440844Z”)。

假设所提供的示例日期中存在拼写错误,这里有几个将日期时间字符串(UTC 格式)转换为 DateTime 的示例:

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;

您必须考虑到您获得的是 UTC 日期,并且必须考虑时区转换。另外,当只取日期部分时,时间部分设置为“12:00:00 AM”。