【问题标题】:ExtJS 4.0 Grid Date Column and Form Date Field (browser timezone issues)ExtJS 4.0 网格日期列和表单日期字段(浏览器时区问题)
【发布时间】:2011-10-29 00:09:15
【问题描述】:

网格中的日期列(也在日期表单字段中)使用本地浏览器时区,但我更喜欢使用在应用程序用户配置文件中选择的时区,而不是使用浏览器时区。

我能做些什么呢?

我可以强制 ExtJS 使用没有夏令时的时区,所以所有日期/时间组合都像 UTC 一样有效吗?与服务器端通信时使用哪种日期时间格式?

我正在使用 PostgreSQL,但我不确定要使用哪种数据库列类型?现在我正在使用带时区的时间戳,但不确定它是否可以?

【问题讨论】:

    标签: python django postgresql extjs timezone


    【解决方案1】:

    在您的 EXT 代码中,不要将日期指定为 new Date(),而是计算所需日期并使用:new Date("October 13, 2011 11:13:00")(或任何您喜欢的日期)。您可以在字段定义中使用convert: 来执行此操作。

    编辑:我会假设您网格中的 Date 列从您的数据库中获取它的值,对吗?要对此进行调整,您可以在字段定义中使用“转换:”函数并添加三个小时(或您需要的任何值)。

    {
       name: 'EventDate',
       type: 'date', dateFormat: "Y-m-d G:i:s", <-- adjust as needed
       convert: function(val) {
          return Ext.Date.add(val, Ext.Date.HOUR, 3)
       }
    }
    

    【讨论】:

    • 问题是因为我的浏览器时区是保加利亚/索非亚我无法显示/输入日期时间 2011-03-27T03:00:00 因为这是这里的时钟提前 1 小时移动.并且 ExtJS 在内部使用浏览器时区来显示/解析日期(我认为是这样)但是用户可能希望使用与浏览器不同的时区,因此 2011-03-27T03:00:00 必须是一个有效值。此外,当服务器返回日期时间时,它无法知道浏览器正在使用哪个时区。
    • 或者我只是不明白你在对我说什么 :) 我也可以使用日期和时间单独的字段...也许这会有所帮助
    • 我可以调整它(以更正数据库值),但仍然无法在网格字段中显示 2011-03-27 03:00:00,因为它在浏览器中不是 JavaScript 中的有效 Date() datefield 使用保加利亚时区。它将显示为 2011-03-27 02:00:00 因为那是当前时间正在转移的时候。看到这个:a.yfrog.com/img737/8836/7a6s.png
    • 这是一个棘手的问题 - 如果你再晚一秒,它会正确吗?
    • 仍然不正确 :( a.yfrog.com/img619/4412/93br.png 可能是我需要实现自己的字段 :( 不知道为什么 Sencha 这样做(使用 JS Date 变量)我需要关闭这个浏览器时区依赖行为
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多