将字符串日期转换为特定的日期时间格式

时间:2018-06-30 17:38:57

标签: c# asp.net string datetime

我有一个日期时间格式的字符串,如下所示:

开始日期:

2018/06/30 23:00

和结束日期:

2018/07/01 19:32

现在我想将此字符串转换为如下格式:

2017-02-11T19:58:18.918Z

开始日期和结束日期都应在此日期-字符串格式

我尝试过这样的事情:

   var properStart = DateTimeOffset.ParseExact(startdate, "yyyy-MM-dd'T'HH:mm:sszzz",
                                                       CultureInfo.InvariantCulture).ToString();
   var properEnd = DateTimeOffset.ParseExact(enddate, "yyyy-MM-dd'T'HH:mm:sszzz",
                                                CultureInfo.InvariantCulture).ToString();

但这给了我类似以下的错误:

Additional information: String was not recognized as a valid DateTime.

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

您正在尝试解析此字符串:

"2018/06/30 23:00"

指定此格式:

"yyyy-MM-dd'T'HH:mm:sszzz"

该格式与该字符串不匹配,因此解析失败。根据输入的格式进行解析:

var properStart = DateTimeOffset.ParseExact(startdate, "yyyy/MM/dd HH:mm",
                                                   CultureInfo.InvariantCulture)

然后输出成您想要的格式:

var properStartOutput = properStart.ToString("yyyy-MM-dd'T'HH:mm:sszzz");

或者,如果您真的想要全部放在一行:

var properStart = DateTimeOffset.ParseExact(startdate, "yyyy/MM/dd HH:mm",
                                                   CultureInfo.InvariantCulture).ToString("yyyy-MM-dd'T'HH:mm:sszzz").

关键是解析输入格式化输出是两个不同的操作。