【问题标题】:Format of Posted DateTime Value发布日期时间值的格式
【发布时间】:2017-01-16 12:55:02
【问题描述】:

我正在尝试以 DD-MM-YYYY HH:mm:ss 格式发布日期时间值。这是我要发布的值;

{
    "EndDate" : "12.10.2015",
    "StartDate" : "10.11.2015"
}

这是我的课:

public class Report
{
   public DateTime StartDate { get; set; }
   public DateTime EndDate { get; set; }
}

public string Post([FromBody]Report value)
{

}

当我发布它时,它被发布为以下格式:MM-DD-YYYY

我该如何处理?

请注意,我正在通过 Restful API 编写 WepApi App 和 POST 方法

发布值为 JSON 格式 平台是.NET。 使用 C# 语言。

提前致谢!

【问题讨论】:

  • 你能显示你的代码吗?...只是一个sn-p,日期分配在哪里,在哪里读取?
  • 您说您想要DD-MM-YYYY HH:mm:ss,但在示例中您发布的是句点(不考虑日/月顺序)。您应该使用 ISO 8601 标准发布。
  • 如何在 setter、getter 类中做到这一点? @劳埃德
  • @NewPHPer 您可以在发布时使用StartDate.ToString("s", System.Globalization.CultureInfo.InvariantCulture) 转换它。这比在 Report 类中存储一个字符串要好。
  • @NewPHPer 我已经写下了我的评论作为答案。如果有效,请标记为答案。

标签: c# json rest datetime asp.net-web-api


【解决方案1】:

您可以在发布时转换值:

StartDate.ToString("s", System.Globalization.CultureInfo.InvariantCulture)
EndDate.ToString("s", System.Globalization.CultureInfo.InvariantCulture)

更多有用的信息可以在 MSDN (https://msdn.microsoft.com/en-us/library/zdtaw1bw(v=vs.110).aspx) 上找到

【讨论】:

  • 这不是一个好主意。 JSON 日期应该使用 ISO8601 格式。硬编码这样的转换会导致更多的错误
  • @PanagiotisKanavos 如果您查看可排序(“s”)格式说明符部分下的link,它会说符合ISO 8601。我错过了什么吗?跨度>
  • 日期应该首先采用不同的格式。在客户端,Json.NET 会正确序列化日期,这意味着 OP 正在手动编码序列化
  • @PanagiotisKanavos 如果他们使用 JSON.NET,你是对的。但我在任何地方都看不到他们使用 JSON.NET
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 2013-04-23
相关资源
最近更新 更多