使用TimeZoneInfo

时间:2019-05-21 20:26:24

标签: c# datetimeoffset

我在智利有一个包含日期的字符串:“ 2018-04-23”

在我的国家/地区,撰写本文时,时区偏移为-4小时。
但是回到那个日期(4月23日),时区偏移量为-3小时。

包含这些任意偏移量更改的相关TimeZoneInfo如下:

 var tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");

我的目标是将此日期(2018-04-23)保存在SQL Server中类型为DateTimeOffset的列中

因此,该日期应另存为:“ 2018-04-23 00:00:00.000 -03:00”(通过使用Management Studio进行视觉检查)

如何以编程方式实现这一目标?

我尝试了以下操作:

 var date = DateTime.Parse("2018-04-23");
 var tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");

 var utcDate = TimeZoneInfo.ConvertTimeToUtc(date, tzi);
 var offset = tzi.GetUtcOffset(utcDate);

 return ((DateTimeOffset)utcDate).ToOffset(offset);

但是...

  • 它不起作用(保存为“ 2018-04-23 00:00:00.000 -04:00”)
  • 太乱了

提出相同问题的另一种方法是:

我有一个非标准格式的本地日期:“ 2018-04-23”
该位置的相关时区为:“太平洋SA标准时间”
我想使用ISO标准格式的相同日期:“ 2018-04-23 00:00:00.000 -03:00”

我该如何实现?
输入:“ 2018-04-23”和“太平洋标准时间”
输出:“ 2018-04-23 00:00:00.000 -03:00”

0 个答案:

没有答案