【问题标题】:What is the TryParseExact formatter for a JSON datetime?JSON 日期时间的 TryParseExact 格式化程序是什么?
【发布时间】:2015-11-13 01:51:43
【问题描述】:

我正在将 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}

这不是我想要的。我尝试了以下几个formatter variations,都无法解析:

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”和“Z”字符做任何特别的事情吗?在 JSON 格式的日期时间中,TryParseExact 的格式是什么?

【问题讨论】:

  • 试试下面的yyyy-MM-dd hh:mm tt

标签: javascript c# json datetime datetime-format


【解决方案1】:

使用格式: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.RoundtripKindlike:

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

还要补充一点,就我个人而言,我一直在 Javascript 端使用特定格式,然后使用相同格式在 C# 中解析 DateTime。我会将 Javascript DateTime 转换为字符串,然后将其传递到服务器端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多