【问题标题】:Return a string from milliseconds since epoch从纪元以来的毫秒数返回一个字符串
【发布时间】:2013-05-16 20:30:09
【问题描述】:

我有这个变量来保存一个时间/日期的字符串。

问题是,它还显示了我不想要的时区。所以这就是我所拥有的:

//data[i].posted has seconds sinch epoch
var postedon = new Date( parseInt(data[i].postedon/1000) );
document.write = postedon;

结果是我得到例如:

Thu Jan 01 1970 00:00:00
GMT+0000 (GMT Standard Time)

事情是我不想要GMT+0000 (GMT Standard Time)

如何过滤掉?

【问题讨论】:

  • data[i].postedon 是什么?
  • @karthikr 它在问题中说
  • @Bergi 我并没有尝试使用库:)
  • 对现有代码的几点说明: 1) 如果您除以1000,则实际上隐含了parseFloat,使parseInt 无用。 2)即使它不是无用的,您也应该始终将基数作为第二个参数传递,几乎总是10。 3) 如果data[i].postedon 是秒数,你应该1000,而不是除以。

标签: javascript


【解决方案1】:

Date.prototype.toString(这就是您在此处有效调用的名称)是区域感知的。这意味着法国的某人会看到类似于jeudi 1er janvier 1970 01:00:00 GMT+1

换句话说,你完全没有控制权。

但是,您可以定义自己的函数或覆盖内置函数。试试这样的:

Date.prototype.toString = function() {
    var y = this.getUTCFullYear(),
        m = this.getUTCMonth(),
        d = this.getUTCDate(),
        h = this.getUTCHours(),
        i = this.getUTCMinutes(),
        s = this.getUTCSeconds(),
        w = this.getUTCDay(),
        months = "JanFebMarAprMayJunJulAugSepOctNovDec",
        days = "SunMonTueWedThuFriSat",
        pad = function(n) {return n<10?'0'+n:n;};
    return days.substr(w*3,3)+" "+months.substr(m*3,3)+" "+pad(d)+" "+y+" "+pad(h)+":"+pad(i)+" "+pad(s);
};

【讨论】:

  • 不知道它是本地感知的!谢谢你,我现在就测试一下:)
  • +1,但说真的,monthsdays 应该是数组,而不是 . . .这个。
  • @ruakh 一年前,我在使用数组。然后我决定我懒得打','这么多次,也懒得找一个旧的副本来复制粘贴,所以我做了这个XD节省了内存,这很整洁。
  • @Kolink:至少,你可以写"JanFebMarAprMayJunJulAugSepOctNovDec".match(/.../g)"Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec".split(";") 之类的东西。这并不比你所拥有的更冗长,当你认为它会让你写 [m] 而不是 .substr(m*3,3)
  • 哦,我喜欢第一个。
猜你喜欢
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 2012-02-19
  • 2021-06-11
  • 2014-09-02
  • 2020-01-11
相关资源
最近更新 更多