【问题标题】:Does DateTime.UtcNow.Ticks in .NET match any standard?.NET 中的 DateTime.UtcNow.Ticks 是否符合任何标准?
【发布时间】:2021-06-22 01:06:53
【问题描述】:

调查通过 Web API 发送/接收的数据。我发现在某些地方他们正在发送/接收DateTime.UtcNow.Ticks 的长值。它用于描述特定的时间点(例如,在有效期至的含义中)。

docs 解释了它们是什么,但我实际上想知道这是否符合任何标准? 在我看来,这绝对不是 unix epoch 或其他东西。那么对于一个使用 API 但不是用 C# 开发的客户端,你会如何描述它呢?

【问题讨论】:

    标签: c# .net rest .net-core timestamp


    【解决方案1】:

    C# 中的刻度非常明确:

    ... 表示自公历 0001 年 1 月 1 日午夜 12:00:00 以来经过的 100 纳秒间隔数。 https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks?view=net-5.0

    除非您需要 100 纳秒的精度(这不太可能),否则我建议您开始使用 ISO8601,它看起来类似于 YYYY-MM-DDThh:mm:ss.fffZ,并且在大多数语言中都得到了很好的支持。

    【讨论】:

    • 是的,在正文中,iso 8601 是我(或 JSON)倾向于使用的典型格式。但 ISO 8601 似乎不是 URL 安全的,我正在调查的 API 将它们用作 URL 参数。是的,它在文档中有很好的定义,但它不是一个公认的标准,不是吗?
    • 想一想。为什么要在正文中使用一种标准,而在 URL 中使用另一种标准? ISO8601 在 URL 中是安全的,假设您对其进行编码,并且编码通常会自动处理,假设您不是手工制作 URL 字符串(您不应该这样做)。
    • 只是为了确保:您明白代码不是由我编写的,我正在调查一个外国 API,我不会重写它。 :-)
    猜你喜欢
    • 2019-07-07
    • 2021-05-31
    • 1970-01-01
    • 2011-03-07
    • 2013-08-27
    • 2014-05-31
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多