我试图找出让用户根据它们提供的一些字符串参数设置可移植类库的内部DateTime值的最佳方法。字符串参数必须是简单格式。
所以,现在我有一些考虑因素。
指定UTC偏移量足以获得正确的DateTime
public static DateTime FromUtcOffset(string value) { var utcDateTime = DateTime.UtcNow; var offSet = TimeSpan.Parse(value); return utcDateTime + offSet; }
或者指定TimeZone比UTC Offset具有一些优势
TimeZoneInfo someTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
DateTime convertTimeFromUtc = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, someTimeZone);
我的问题是:可以从用户那里获取正确的字符串参数,让他决定DateTime的值是什么?
答案 0 :(得分:2)
实际上,这取决于:
1 + 2基本上意味着你的时间偏移可能会改变。如果不是(该库仅供本地使用),请获取当地时间而不关心时间偏移。但是,如果偏移量可能会改变,通常以UTC格式存储“绝对”时间应该足够了。为此,您可以:
或
在1和3中,您需要一个时区来计算时间偏移。如果您已经知道偏移量,则无需知道时区。而且,DateTime本身可以存储时间偏移信息。它还可以告诉您它是存储本地还是UTC时间(请参阅DateTime.Kind属性)。