我不确定是否有可能实现,我已经尝试了很多方法,除了编写算法之外。
我有一个类型为datetime的变量,我想将其转换为特定的时区和特定的格式。让我给出一个例子
todayCloseLine -> UTC时间 -> "2021-05-25 18:36:00"
closeline_local -> 将todayCloseLine转换为GMT标准时间 -> "2021-05-25 19:36:00"
我已经能够将其转换为给定的时区,所以没有问题。我想要的是closeline_local的这种格式
2021-05-25T18:36:00.0000000+01:00
我尝试过以下方法(还有其他方法):
在todayCloseLine上尝试ToLocalTime()。ToString(“o”),但是为此要求我的电脑应处于特定时区。这不是一个选项。
现在,我可以编写以下算法:
获取时间跨度差异,具体取哪个值大取决于情况。
获取符号,+或-,具体取哪个值大取决于情况。
然后将todayCloseLine转换为ToString(“o”),并附加符号和时间跨度,以获取最终输出。
但我想避免这样做,最好使用内置方法或其他方法进行此转换。
如果你能帮忙,谢谢。
希望这能帮到你。
我有一个类型为datetime的变量,我想将其转换为特定的时区和特定的格式。让我给出一个例子
todayCloseLine -> UTC时间 -> "2021-05-25 18:36:00"
closeline_local -> 将todayCloseLine转换为GMT标准时间 -> "2021-05-25 19:36:00"
我已经能够将其转换为给定的时区,所以没有问题。我想要的是closeline_local的这种格式
2021-05-25T18:36:00.0000000+01:00
我尝试过以下方法(还有其他方法):
在todayCloseLine上尝试ToLocalTime()。ToString(“o”),但是为此要求我的电脑应处于特定时区。这不是一个选项。
现在,我可以编写以下算法:
获取时间跨度差异,具体取哪个值大取决于情况。
获取符号,+或-,具体取哪个值大取决于情况。
然后将todayCloseLine转换为ToString(“o”),并附加符号和时间跨度,以获取最终输出。
但我想避免这样做,最好使用内置方法或其他方法进行此转换。
如果你能帮忙,谢谢。
DateTime todayCloseLine1 = DateTime.SpecifyKind(Convert.ToDateTime("25-May-2021 18:36"), DateTimeKind.Utc);
var closeline_local1 = DateTime.SpecifyKind(TimeZoneInfo.ConvertTime(
todayCloseLine1,
TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time")), DateTimeKind.Local);
var dt1 = closeline_local1.ToLocalTime().ToString("o");
var dt2 = closeline_local1.ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffzzz");
OUTPUT for both dt1 and dt2 -
2021-05-25T19:36:00.0000000+05:30 --> machine date IST
2021-05-25T19:36:00.0000000+01:00 --> machine date LONDON
希望这能帮到你。
closeline_local.ToString("yyyy-MM-dd'T'HH:mm:ss.FFFFFFFzzz")
? - DavidGzzz
格式说明符会给出相对于 UTC 的偏移量,因此我们确实需要看到您代码中的其余部分才能理解为什么首先会得到这样的时间。 - DavidGDateTimeOffset
类。它会正确地转换为包含偏移后缀的字符串。 - Ben Voigt