首页 > 解决方案 > TimeIntervalDto 对象中的持续时间数据类型

问题描述

我正在创建一个数据库来存储在 Clockify 中创建的时间条目,我需要为持续时间字段声明一个数据类型。TimeIntervalDto 中返回一个字符串,API 文档中提供的示例是“PT1M4S”或“PT1H30M15S”。如果您知道如何解码,这显然是一个有意义的字符串。

API 文档中给出的示例是:

"timeInterval": { "duration": "PT1M4S", (例如: PT1H30M15S - 1 小时 30 分 15 秒) "end": "2018-06-12T14:01:41Z", "start": "2018-06- 12T14:00:37Z"},

我的问题是:

  1. 我如何将持续时间翻译成有意义的东西;和
  2. 假设我使用 varchar 或 nvarchar 作为数据类型,我需要满足的最大大小是多少?

标签: clockify

解决方案


您正在使用 ISO 8601:2004(en) 持续时间 ISO 格式。

您有如下模式:“PnnYnnMnnDTnnHnnMnnS”

详细地:

  • 字母 P 代表句点格式
  • 每个字母代表一个不同的值,例如,如果要表示两年,请使用 02Y。
  • 几个小时使用字母 T。

所以对于你的问题:

如果您可以在保存到数据库之前使用 C# 语言,您可以使用以下内容解码 de 模式:

 String pattern = "PT1H30M15S";
 TimeSpan ts = System.Xml.XmlConvert.ToTimeSpan(pattern); //Use System.Xml because it works with ISO 8601:2004

您可以在 ISO 网页中查找更多信息。https://www.iso.org/obp/ui/#iso:std:iso:8601:ed-3:v1:en


推荐阅读