通过视图模型接收日期时间输入的最佳做法是什么?



我有一个视图模型,其中一个属性为 DateTime。我想允许请求者在他们想要的任何时区发送日期时间。最后,我想将该日期时间转换为UTC,如果时区信息未与日期到达,则假设是UTC。

另外,我可以将发布的DateTime限制为UTC或至少包含时区信息的内容。

我的后端与UTC中的所有日期一起使用,将其返回UTC,这也是它节省的方式。这个问题是关于接收"客户端"输入,以及接受日期并将其变成或确保其是UTC的最佳实践是什么。

这就是我现在拥有的

public class MyViewModel
{
    /// <summary>
    /// Start date, in UTC.
    /// </summary>
    [Required]
    [DataType(DataType.Date)]
    public DateTime StartDate { get; set; }
}

和在控制器中:

// Convert to UTC
model.StartDate = model.StartDate.ToUniversalTime();

我想我也可以通过添加构造函数在视图模型本身中做到这一点。

通过视图模型接收DateTime输入的最佳实践是什么?最终,我想确保我收到的是UTC。

如果要在多个时区使用您的应用程序,我建议将UTC DateTime对象保存在数据库中。

将此UTC日期对象转换为本地DateTime的常见练习。

intput

API应以本博客中提到的输入为ISO 8601格式。

更喜欢ISO 8601(yyyy-mm-dd'hh:mm:ssz),因为它是 人类可读,并具有指定的时区。没有歧义 该时期为几秒钟或毫秒。ISO 8601字符串编码 以一种使字符串分类和比较的方式。

输出

我相信您想知道Web API应该如何返回DateTime对象。

我认为,RESTFUL API应该独立于时区,并且应该在UTC中返回日期。

呼叫此API的电话应用程序/桌面应用程序/Web应用应该有责任以正确的时区格式显示日期。

,但再次,正如评论之前所述,该决定是由您的应用程序设计驱动的。

我希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新