.net 问题解析日期时间

oxcyiej7  于 2023-08-08  发布在  .NET
关注(0)|答案(3)|浏览(116)

我有下面的字符串2023-07-18 11:38 AM
我尝试用下面的代码解析它

fromDate = DateTime.ParseExact(adhocData.FromDateTime, 
                               "YYYY-MM-DD hh:mm tt",
                               CultureInfo.InvariantCulture).Date;

字符串
但我总是得到以下错误
字符串“2023-07-18 11:38 AM”未被识别为有效的DateTime

e7arh2l6

e7arh2l61#

您的格式稍有错误,请尝试:

DateTime.ParseExact("2023-07-18 11:38 AM", 
                    "yyyy-MM-dd hh:mm tt",
                    CultureInfo.InvariantCulture);

字符串
注意年份和日期组件的上限!

w1jd8yoj

w1jd8yoj2#

使用字符串格式“yyyy-MM-dd hh:mm tt”,而不是“YYYY-MM-DD hh:mm tt”。
这解决了问题,甚至时间显示正常。
see the program here

yuvru6vn

yuvru6vn3#

更好的选择是确保客户端发送ISO8601。“从注解中,字符串是在React应用程序中使用moment和apiFromDateTime?.format('YYYY-MM-DD hh:mm a')生成的。没必要这样
moment对象是serialized to ISO8601 out of the box though。该文档示例显示了如何将包含moment对象的对象序列化为JSON:

JSON.stringify({
    postDate : moment()
});

字符串
这就产生了

'{"postDate":"2013-02-04T22:44:30.652Z"}'


fetch将其发布到服务器应该就可以了。借用MDN的提取示例:

const data={
    postDate : moment()
}

const response = await fetch("https://example.com/profile", {
      method: "POST", // or 'PUT'
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify(data),
    });

相关问题