什么是JSON日期时间的TryParseExact格式化器?

What is the TryParseExact formatter for a JSON datetime?

本文关键字:TryParseExact 格式化 时间 JSON 日期 什么      更新时间:2023-09-26

我将DateTime作为一个字符串传递给Web API 2调用,我不能为我的生命弄清楚我需要使用什么格式化器来获得TryParseExact以获得精确的日期/时间。我正在删除客户机上的GMT偏移量,所以我需要它按原样接受参数,不带GMT。

Javascript:

var htmlDateString = "8/19/2015 12:00 AM";
var fromDate = new Date(htmlDateString);
//remove GMT offset
fromDate.setHours(fromDate.getHours() - (fromDate.getTimezoneOffset() / 60));
var wireFormattedDate = fromDate.toJSON();  //results in 2015-08-19T00:00:00.000Z

控制器:

public string Get(string fromDate)
{
    DateTime parsedFromDate;
    if(!DateTime.TryParseExact(fromDate, "?????", CulturInfo.InvariantCulture, DateTimeStyles.None, out from))
    {
        //some stuff
    }
    //some other irrelevant stuff
}

如果我使用TryParse(没有格式化器),我得到GMT偏移值(我在GMT-6):

{8/18/2015 6:00:00 PM}

这不是我想要的。我尝试了以下几种格式化器的变体,它们都无法解析:

yyyy-MM-ddThh:mm:ss:ffz
yyyy-MM-ddThh:mm:ss:ffzz
yyyy-MM-ddThh:mm:ss:fffz
yyyy-MM-dd hh:mm:ss:fffz

需要指定不同的DateTimeStyle吗?我需要为"T"answers"Z"字符做什么特别的处理吗?在JSON格式的日期时间上TryParseExact的格式是什么?

使用格式:yyyy-MM-dd'T'HH:mm:ss.fff'Z'"

var isParsed = DateTime.TryParseExact(dateStr, 
                    "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", 
                    CultureInfo.InvariantCulture,
                    DateTimeStyles.None, 
                    out parsedFromDate);
另一种方法是指定DateTimeStyles.RoundtripKind,如:

DateTime.TryParse(dateStr, CultureInfo.InvariantCulture, 
                DateTimeStyles.RoundtripKind, 
                out parsedFromDate);

还有一件事要补充,就个人而言,我总是在Javascript结束时使用特定的格式,然后在c#中使用相同的格式解析DateTime。我会将Javascript DateTime转换为字符串,然后将其传递给服务器端。