我们正在尝试构建基本的事件日历功能,允许用户创建事件并指定给定月、日、年、小时和分钟以及时区 ( System.TimeZoneInfo.Id)的开始时间。CMS 系统System.DateTime根据我们服务器的位置生成结果,比如说TimeZoneInfo.Id Mountain Standard Time。CMS 不提供带有日期选择器组件的选项来指定时区。然而,我们确实可以控制 SQL 日期时间精度,默认情况下设置为7.
在DateTime被格式化为yyyyMMddTHHmmssZ为的在填充.ICS开始/结束时间/ iCal的目的。使用这种格式,它使 2018 年 5 月 25 日晚上 7 点 ( 20180508T192840Z) 始终看起来像服务器的山地标准时间 (MST),而不是所选东部标准时间 (EST) 中的 2018 年 5 月 25 日晚上 7 点。
我怎么能“替代”的时区DateTime是在不改变年/月/日/小时/分钟或者产生DateTime,DateTimeOffset,TimeZoneInfo,NodaTime,甚至string功能,格式转换成yyyyMMddTHHmmssZ?
以下:
TimeZoneInfo destinationTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var converted = TimeZoneInfo.ConvertTime(dateTime1, destinationTimeZone);
或者:
LocalDateTime fromLocal = LocalDateTime.FromDateTime(dateTime1);
DateTimeZone fromZone = DateTimeZoneProviders.Tzdb["America/Denver"];
ZonedDateTime fromZoned = fromLocal.InZoneLeniently(fromZone);
DateTimeZone toZone = DateTimeZoneProviders.Tzdb["America/Chicago"];
ZonedDateTime toZoned = fromZoned.WithZone(toZone);
LocalDateTime toLocal = toZoned.LocalDateTime;
var result = toLocal.ToDateTimeUnspecified();
创建一个新DateTime的小时,从 CST 调整为 EST,这不起作用,因为目标是DateTime使用原始小时值但使用TimeZoneInfo.Id 东部标准时间。
DateTime构造函数似乎没有指定的构造函数TimeZoneInfo,只有DateTimeKind.
这怎么能用一些甚至诸如DateTimecreated from来完成DateTime.Now?
长风秋雁
相关分类