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

时间:2018-07-02 17:07:27

标签: c# datetime datetime-format timezone-offset

我有如下所示的日期时间数据:2018-06-29T22:10:33Z

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

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

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

两者均出错。

我正在使用dateString.substring(0,10)来获取前10个字符并将其转换为日期。

有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用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());
}

答案 1 :(得分:1)

首先,日期格式似乎格式不正确。您应该接收的格式应为“ 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”。