【问题标题】:Convert UNIX Time to mm/dd/yy hh:mm (24 hour) in JavaScript在 JavaScript 中将 UNIX 时间转换为 mm/dd/yy hh:mm(24 小时)
【发布时间】:2026-01-07 12:35:01
【问题描述】:

我一直在用

timeStamp = new Date(unixTime*1000);
document.write(timeStamp.toString());

它会输出例如:

2010 年 7 月 6 日星期二 08:47:00 CDT
//24小时制

屏幕空间是主要的,所以我想在日期和输出上占用更少的空间:

mm/dd/yy hh:mm
//也是24小时制

【问题讨论】:

    标签: javascript


    【解决方案1】:

    只需向Date 对象添加一个额外的方法,这样您就可以尽可能多地重复使用它。首先,我们需要定义一个辅助函数String.padLeft

    String.prototype.padLeft = function (length, character) { 
        return new Array(length - this.length + 1).join(character || ' ') + this; 
    };
    

    在这之后,我们定义Date.toFormattedString

    Date.prototype.toFormattedString = function () {
        return [String(this.getMonth()+1).padLeft(2, '0'),
                String(this.getDate()).padLeft(2, '0'),
                String(this.getFullYear()).substr(2, 2)].join("/") + " " +
               [String(this.getHours()).padLeft(2, '0'),
                String(this.getMinutes()).padLeft(2, '0')].join(":");
    };
    

    现在您可以像使用 Date 对象的任何其他方法一样简单地使用此方法:

    var timeStamp = new Date(unixTime*1000);
    document.write(timeStamp.toFormattedString());
    

    但请记住,这种格式可能会造成混淆。例如,发行时

    new Date().toFormattedString()
    

    该函数此时返回07/06/10 22:05。对我来说,这更像是 6 月 7 日而不是 7 月 6 日。

    编辑:这仅适用于可以使用四位数表示年份的情况。 9999 年 12 月 31 日之后,这将发生故障,您必须调整代码。

    【讨论】:

    • 这将在 Y10K 之后中断。在那里,我说过了。
    • 9999 年 12 月 31 日之后开发者自己出现故障:D
    • 如果我的选择到那时还没有归属,那就去他妈的吧。
    • 而不是substr(2, 2),只需使用slice(-2),这将一直有效到世界末日。 :P
    • 修改标准对象是个坏主意。想想每个图书馆都试图以自己的方式改变Date(以及使用其中几个时的冲突)。只是不要这样做!
    最近更新 更多