当前位置: 首页 > 面试题库 >

使用Javascript的当前时间格式

琴琪
2023-03-14
问题内容

我想用javascript获取特定格式的当前时间。

使用下面的函数并调用该函数,它将给我 星期五Feb 01 2013 13:56:40 GMT + 1300(新西兰夏令时间), 但我想将其格式化为
2013年2月1日星期五2:00 pm

var d = new Date();
var x = document.getElementById("time");
x.innerHTML = d;

当然,上面的代码没有任何格式化逻辑,但是我还没有遇到任何“有效的”格式化程序。


问题答案:

JavaScript Date有几种方法可以让您提取其部分:

getFullYear()-返回4位数字的年份
getMonth()-返回表示该年月份的从零开始的整数(0-11)。
getDate()-返回月份中的一天(1-31)。
getDay()-返回星期几(0-6)。0是星期日,6是星期六。
getHours()-返回一天中的小时(0-23)。
getMinutes()-返回分钟(0-59)。
getSeconds()-返回第二个(0-59)。
getMilliseconds()-返回毫秒数(0-999)。
getTimezoneOffset()-返回机器本地时间和UTC之间的分钟数。

没有内置方法可让您获取本地化的字符串,例如“星期五”,“二月”或“
PM”。您必须自己编写代码。要获取所需的字符串,您至少需要存储几天和几个月的字符串表示形式:

var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

然后,使用上述方法将其放在一起:

var d = new Date();
var day = days[d.getDay()];
var hr = d.getHours();
var min = d.getMinutes();
if (min < 10) {
    min = "0" + min;
}
var ampm = "am";
if( hr > 12 ) {
    hr -= 12;
    ampm = "pm";
}
var date = d.getDate();
var month = months[d.getMonth()];
var year = d.getFullYear();
var x = document.getElementById("time");
x.innerHTML = day + " " + hr + ":" + min + ampm + " " + date + " " + month + " " + year;

我有一个喜欢包含在标准库中的日期格式功能。它采用定义所需输出的格式字符串参数。格式字符串 大致
基于.Net自定义日期和时间格式字符串。对于您指定的格式,以下格式字符串将起作用: "dddd h:mmtt d MMM yyyy"

var d = new Date();
var x = document.getElementById("time");
x.innerHTML = formatDate(d, "dddd h:mmtt d MMM yyyy");

这是我的完整日期格式化功能:

function formatDate(date, format, utc) {
    var MMMM = ["\x00", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
    var MMM = ["\x01", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    var dddd = ["\x02", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    var ddd = ["\x03", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];

    function ii(i, len) {
        var s = i + "";
        len = len || 2;
        while (s.length < len) s = "0" + s;
        return s;
    }

    var y = utc ? date.getUTCFullYear() : date.getFullYear();
    format = format.replace(/(^|[^\\])yyyy+/g, "$1" + y);
    format = format.replace(/(^|[^\\])yy/g, "$1" + y.toString().substr(2, 2));
    format = format.replace(/(^|[^\\])y/g, "$1" + y);

    var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1;
    format = format.replace(/(^|[^\\])MMMM+/g, "$1" + MMMM[0]);
    format = format.replace(/(^|[^\\])MMM/g, "$1" + MMM[0]);
    format = format.replace(/(^|[^\\])MM/g, "$1" + ii(M));
    format = format.replace(/(^|[^\\])M/g, "$1" + M);

    var d = utc ? date.getUTCDate() : date.getDate();
    format = format.replace(/(^|[^\\])dddd+/g, "$1" + dddd[0]);
    format = format.replace(/(^|[^\\])ddd/g, "$1" + ddd[0]);
    format = format.replace(/(^|[^\\])dd/g, "$1" + ii(d));
    format = format.replace(/(^|[^\\])d/g, "$1" + d);

    var H = utc ? date.getUTCHours() : date.getHours();
    format = format.replace(/(^|[^\\])HH+/g, "$1" + ii(H));
    format = format.replace(/(^|[^\\])H/g, "$1" + H);

    var h = H > 12 ? H - 12 : H == 0 ? 12 : H;
    format = format.replace(/(^|[^\\])hh+/g, "$1" + ii(h));
    format = format.replace(/(^|[^\\])h/g, "$1" + h);

    var m = utc ? date.getUTCMinutes() : date.getMinutes();
    format = format.replace(/(^|[^\\])mm+/g, "$1" + ii(m));
    format = format.replace(/(^|[^\\])m/g, "$1" + m);

    var s = utc ? date.getUTCSeconds() : date.getSeconds();
    format = format.replace(/(^|[^\\])ss+/g, "$1" + ii(s));
    format = format.replace(/(^|[^\\])s/g, "$1" + s);

    var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds();
    format = format.replace(/(^|[^\\])fff+/g, "$1" + ii(f, 3));
    f = Math.round(f / 10);
    format = format.replace(/(^|[^\\])ff/g, "$1" + ii(f));
    f = Math.round(f / 10);
    format = format.replace(/(^|[^\\])f/g, "$1" + f);

    var T = H < 12 ? "AM" : "PM";
    format = format.replace(/(^|[^\\])TT+/g, "$1" + T);
    format = format.replace(/(^|[^\\])T/g, "$1" + T.charAt(0));

    var t = T.toLowerCase();
    format = format.replace(/(^|[^\\])tt+/g, "$1" + t);
    format = format.replace(/(^|[^\\])t/g, "$1" + t.charAt(0));

    var tz = -date.getTimezoneOffset();
    var K = utc || !tz ? "Z" : tz > 0 ? "+" : "-";
    if (!utc) {
        tz = Math.abs(tz);
        var tzHrs = Math.floor(tz / 60);
        var tzMin = tz % 60;
        K += ii(tzHrs) + ":" + ii(tzMin);
    }
    format = format.replace(/(^|[^\\])K/g, "$1" + K);

    var day = (utc ? date.getUTCDay() : date.getDay()) + 1;
    format = format.replace(new RegExp(dddd[0], "g"), dddd[day]);
    format = format.replace(new RegExp(ddd[0], "g"), ddd[day]);

    format = format.replace(new RegExp(MMMM[0], "g"), MMMM[M]);
    format = format.replace(new RegExp(MMM[0], "g"), MMM[M]);

    format = format.replace(/\\(.)/g, "$1");

    return format;
};


 类似资料:
  • 问题内容: 我正在尝试使用这种格式来格式化当前时间。 输出: 有什么建议? 问题答案: 用 由于Go使用以下常量来格式化日期,请参阅此处

  • 我有一个用JavaScript打印当前日期和时间的脚本,但是总是错误的。代码如下: 它应该打印并打印

  • 问题内容: 要求是简单地获取给定时区的当前时间( 包括正确的DST调整 )。 SO似乎在这方面徘徊了一些问题,但是我似乎找不到以节省时间的低摩擦方式得出的直接答案(在SO,Joda doco或谷歌搜索中)。似乎在给定的输入(当前UTC时间和所需的TZ)下,我应该能够从Joda Time库中链接几个方法来实现我想要的功能,但是在上述示例中似乎希望评估+处理偏移量/应用程序代码中的转换- 如果可能的话

  • 问题内容: 我经常需要显示基于用户 实际 本地时间或受其影响的信息,该时间在各个时区不同。是否有获取用户当前时间和/或时区的可靠方法? 关键的问题: 服务器端代码基于网站主机或用户的ISP 客户端代码基于用户的系统时钟,太容易操作 关键问题: 是否需要查明用户的地理位置? ISP时间可以成为准确的指南吗? 用户的操作系统时钟可以改变还是可以被用户修改? 例子: 倒数: 只需1小时3分56秒! 问题

  • 问题内容: 我需要改变从一个日期/时间 2014年8月20日15:30:00 看起来像 二○一四年八月二十○日下午3:30 可以使用javascript的Date对象完成此操作吗? 问题答案: 是的,您可以使用本地javascript Date() 对象 及其方法。 例如,您可以创建一个类似以下的函数: 并显示上午/下午和正确的时间。 请记住使用 getFullYear() 方法,而不要使用get

  • 问题内容: 我有一个类似的日期/时间字符串,但我想将其转换为,我该怎么做? 我正在使用以下代码,但会引发异常。 问题答案: 您可以执行简单的字符串操作并创建js日期对象。请参见下面的函数,该函数接受// yyyy-mm-dd hh:mm:ss格式的日期