C# 如何使用Noda time c显示基于本地时区的日期时间字段

C# 如何使用Noda time c显示基于本地时区的日期时间字段,c#,nodatime,C#,Nodatime,我已经尝试使用下面的代码,但它没有工作 Instant instant = Instant.FromDateTimeUtc(DateTime.Now); IDateTimeZoneProvider timeZoneProvider = DateTimeZoneProviders.Tzdb; var usersTimezone = timeZoneProvider[Request.Cookies["ahcs"]["timeZone"].ToString()]; var usersZonedDate

我已经尝试使用下面的代码,但它没有工作

Instant instant = Instant.FromDateTimeUtc(DateTime.Now);
IDateTimeZoneProvider timeZoneProvider = DateTimeZoneProviders.Tzdb;
var usersTimezone = timeZoneProvider[Request.Cookies["ahcs"]["timeZone"].ToString()];
var usersZonedDateTime = instant.InZone(usersTimezone);
试试这个

TimeZoneInfo timeZonetoConvert = TimeZoneInfo.FindSystemTimeZoneById(TimeZoneId2);
    DateTime newTime = new DateTime();

    TimeZoneInfo timeZonefromConvert = TimeZoneInfo.FindSystemTimeZoneById(TimeZoneId2);
    newTime = TimeZoneInfo.ConvertTime(DateTimeToConvert, timeZonefromConvert, timeZonetoConvert );

我想,如果我没记错的话,默认值是本地时区。我有两个下拉列表,一个包含国家列表,另一个包含与某个国家相关的时区。根据国家和时区,用户选择需要转换为该时区的日期时间字段。这从表面上看是合理的,尽管我不确定您为什么需要调用.ToString在cookie值上,假设您的cookie以某种方式填充了TZDB时区。什么不起作用:你得到了一个错误,还是错误的结果?请给这个问题添加更多的信息。@Yogesh:没有,因为没有必要的关联。例如,在美国我可能是法国人。此外,Instant.FromDateTimeUtcDateTime.Now已损坏-请使用DateTime.UtcNow,或首选使用IClock,例如通过SystemClock.Instance。这就是它的作用。@Yogesh-它不起作用,也没什么帮助。另外,我们如何知道cookie返回的值是什么?你应该提供一个例子。请相应地编辑您的问题。谢谢