设置日期时间的最简单字符串值是什么

本文关键字:字符串 是什么 最简单 日期 时间 设置 | 更新日期: 2023-09-27 18:36:30

我正在尝试找出让用户根据他们提供的某些字符串参数设置可移植类库的内部 DateTime 值的最佳方法。字符串参数必须是简单的格式。

所以,现在我有一些考虑。

  1. 指定 UTC 偏移量是否足以获得正确的日期时间

    public static DateTime FromUtcOffset(字符串值){ var utcDateTime = DateTime.UtcNow; var offSet = TimeSpan.Parse(value); 返回 utcDateTime + offSet;}

  2. 或者指定时区比 UTC 偏移量具有一些优势

    TimeZoneInfo someTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); 
    DateTime convertTimeFromUtc = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, someTimeZone);
    

我的问题是:可以从用户那里获取的正确字符串参数是什么,让他决定日期时间的值是什么?

  1. 世界协调时偏移量
  2. 时区
  3. 或任何其他不那么冗长的替代方案。

设置日期时间的最简单字符串值是什么

实际上,这取决于:

  1. 您是否使用位于不同时区的网络主机
  2. 是否存储时间值以供将来使用
  3. 您的库是否在本地工作(因此,知道用户的时区)

1+2基本上意味着你的时间偏移量可能会改变。如果不是(库仅供本地使用),请获取本地时间,而不关心时间偏移量。但是,如果偏移量可能会更改,通常以 UTC 格式存储"绝对"时间就足够了。为此,您可以:

  1. 向用户询问 UTC 时间,而不是其本地时间

  1. 询问本地时间 + 偏移量(如果可能,则获取本地时区的偏移量)
  2. 将其转换为 UTC 时间并以 UTC 时间存储/处理
  3. 使用本地时间提供输出(如果偏移量没有变化,则使用 1.

在 1 和 3 中,您将需要一个时区来计算时间偏移量。如果您已经知道偏移量,则无需知道时区。此外,DateTime 本身可以存储时间偏移量信息。它还可以告诉您它是存储本地时间还是 UTC 时间(请参阅 DateTime.Kind 属性)。