【发布时间】:2017-01-10 13:57:54
【问题描述】:
在这个过于简单的例子中,我有一个控制器方法,它接受一个日期时间
[Route("api/demo)]
public IHttpActionResult Post(DateTime date)
{
// format dateTime here
}
我们使用 Javascript 从客户端调用它。
var data = {
date: new Date()
};
$.ajax({
url: "/api/demo",
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(data),
});
new Date() 部分是我认为最重要的部分,因为我们正在尝试记录调用客户看到的日期(他们的当地时间)
将 DateTime 对象格式化为字符串的最佳方法是什么,以便它记录时区信息,并在以后需要时再次解析回 DateTime 对象?
(我们将此格式化字符串存储在分析记录平台/数据仓库中)
【问题讨论】:
-
你真的不关心数据存储在哪个时区,只关心本地时间。如果您在上午 9:00 在纽约输入日期并且您在加利福尼亚,您不想看到上午 6:00 而不是上午 9:00?
-
如果你想包含一个时区,使用 DateTimeOffset,而不是 DateTime
-
使用
DateTimeOffset作为您的操作参数,并确保以 ISO8601 格式发送日期,例如“2014-05-06T22:24:55Z”。在这种情况下,您无需转换任何内容。
标签: c# datetime asp.net-web-api