【问题标题】:How to display Client Time Zone & TimeZone Abbrevations?如何显示客户端时区或时区缩写?
【发布时间】:2011-05-10 12:48:59
【问题描述】:

我正在创建一个 asp.net 2.0 网站。它显示所有已注册的候选人和注册日期。我将数据库中的所有日期存储为 UniversalDate,现在想根据客户文化和时区显示日期。

我可以使用 javascript 获取时区偏移量,但如何正确显示时区缩写,因为有些偏移量是相同的。

所以请告诉我该怎么做?

【问题讨论】:

    标签: .net asp.net internationalization timezone culture


    【解决方案1】:

    我不确定我是否理解正确:

    您的问题是,您使用 JavaScript 函数 getTimeZoneOffset() 从 Web 浏览器获取时区偏移量,将其发送到服务器并在显示时遇到问题:使用哪个时区?

    基本上,如果是用户默认的时区指示符,则不需要添加。默认情况下,我的意思是本地。在这种情况下,您只需要关心正确的偏移量。当然,这可能是历史数据的问题:如果有多个时区共享(当前)相同的偏移量,但偏移量在不同日期发生变化,您可能会为少数记录打印错误的日期和时间。

    如何避免?唯一的方法是将时区信息添加到用户的个人资料中,并让用户能够从列表中选择她的时区。您可以从TimeZoneInfo 轻松获取列表(这是您需要用来执行计算的类;某些条目将被有意/出于历史原因重复):

    // gives you the list of time zones
    var timeZones = TimeZoneInfo.GetSystemTimeZones();
    foreach(var timeZone in timeZones)
    {
        // gives you the UTC offset and list of cities this entry regards to
        // this is the best what you can display to user
        string name = timeZone.DisplayName;
        // ...
    }
    

    如果您想使用此方法,您可能需要添加信息“根据...时区的所有日期和时间。在此处更改您的时区。”。就是这样。
    我唯一的问题是,DisplayName 属性应该给我本地化名称,但它总是向我显示当前服务器文化中的名称:/

    【讨论】:

      猜你喜欢
      • 2015-05-19
      • 2010-09-15
      • 1970-01-01
      • 2021-03-01
      • 2010-12-22
      • 2013-07-05
      • 2018-01-14
      • 2011-03-01
      相关资源
      最近更新 更多