使用 Javascript 格式化当前时间 [英] Current time formatting with Javascript

查看:23
本文介绍了使用 Javascript 格式化当前时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用 javascript 以特定格式获取当前时间.

I want to get current time in a specific format with javascript.

使用下面的函数并调用它会给我2013 年 2 月 1 日星期五 13:56:40 GMT+1300(新西兰夏令时)但我想格式化它周五下午 2:002013 年 2 月 1 日

With the function below and calling it will give me Fri Feb 01 2013 13:56:40 GMT+1300 (New Zealand Daylight Time) but I want to format it like Friday 2:00pm 1 Feb 2013

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

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

Of course, code above doesn't have any formatting logic but I have not come across with any "working" formatters yet.

推荐答案

JavaScript Date 有几个方法允许你提取它的部分:

A JavaScript Date has several methods allowing you to extract its parts:

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 之间的分钟数.

getFullYear() - Returns the 4-digit year
getMonth() - Returns a zero-based integer (0-11) representing the month of the year.
getDate() - Returns the day of the month (1-31).
getDay() - Returns the day of the week (0-6). 0 is Sunday, 6 is Saturday.
getHours() - Returns the hour of the day (0-23).
getMinutes() - Returns the minute (0-59).
getSeconds() - Returns the second (0-59).
getMilliseconds() - Returns the milliseconds (0-999).
getTimezoneOffset() - Returns the number of minutes between the machine local time and UTC.

没有内置方法允许您获取本地化的字符串,例如Friday"、February"或PM".你必须自己编码.要得到你想要的字符串,你至少需要存储日期和月份的字符串表示:

There are no built-in methods allowing you to get localized strings like "Friday", "February", or "PM". You have to code that yourself. To get the string you want, you at least need to store string representations of days and months:

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

然后,用上面的方法组合起来:

Then, put it together using the methods above:

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;

<span id="time"></span>

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

I have a date format function I like to include in my standard library. It takes a format string parameter that defines the desired output. The format strings are loosely based on .Net custom Date and Time format strings. For the format you specified the following format string would work: "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");

演示: jsfiddle.net/BNkkB/1

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

Here is my full date formatting function:

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;
};

这篇关于使用 Javascript 格式化当前时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆