0

我正在创建一个应用程序,我需要在其中计算当前时间和以前时间之间的时间差,这将来自数据库并需要显示在列表中。该应用程序在印度运行良好,但当同一个应用程序在美国运行时,差异时间显示为 -2560 秒,或类似的东西。为什么是这样?

我用来计算时间差的代码:

var timeAgoInWords = function(date) {
    try {
        var now = Math.ceil(Number(new Date()) / 1000),
            dateTime = Math.ceil(Number(new Date(date)) / 1000),
            diff = now - dateTime,
            str;

        if (diff < 60) {
            return String(diff) + ' seconds ago';
        } else if (diff < 3600) {
            str = String(Math.ceil(diff / (60)));
            return str + (str == "1" ? ' minute' : ' minutes') + ' ago';
        } else if (diff < 86400) {
            str = String(Math.ceil(diff / (3600)));
            return str + (str == "1" ? ' hour' : ' hours') + ' ago';
        } else if (diff < 60 * 60 * 24 * 365) {
            str = String(Math.ceil(diff / (60 * 60 * 24)));
            return str + (str == "1" ? ' day' : ' days') + ' ago';
        } else {
            return Ext.Date.format(new Date(date), 'jS M \'y');
        }
    } catch (e) {
        return '';
    }
};

我从 调用上述函数itemTpl,下面的代码CreatedDate将来自数据库,当用户提交评论并作为参数传递给函数时,我保存该数据库。

this.posted(Ext.Date.parse(values.CreatedDate, "Y-m-d g:i:s"))

 posted: timeAgoInWords

以下是我将当前日期和时间存储到数据库中的方式:

 Ext.Date.patterns = { ISO8601Long: "Y-m-d H:i:s" };
    var date = new Date();
    var now = Ext.Date.format(date, Ext.Date.patterns['ISO8601Long'])
4

1 回答 1

1

这是一个时区问题。由于美国落后于 IST,因此从纪元开始以秒为单位的日期为您提供了过去的日期。因此,这种差异是负面的,因为您输入的日期仍然必须发生在美国。建议您在进行任何计算以查找时间差异之前将所有时间更改为 UTC。您还可以在自己的服务器上计算差异。

于 2012-07-17T06:36:29.917 回答