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

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

问题描述



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

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

当然,上面的代码没有任何格式化逻辑,但是我没有遇到任何

解决方案

JavaScript日期有几种方法允许您提取其部分:



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 ,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月。 
var days = [星期日,星期一,星期二,星期三,星期四,星期五

然后,使用上面的方法将它放在一起:

  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 = hr< 12? 上午下午;
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 ++年;

我有一个日期格式函数,我喜欢包含在我的标准库中。它需要一个定义所需输出的格式字符串参数。基于 .Net自定义日期和时间格式字符串的格式字符串 a>。对于您指定的格式,以下格式字符串将起作用: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



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

  function formatDate(date,format,utc){
var MMMM = [\x00,January,February,March ,四月,五一,六一,七一,八一,九月,十月,十一月,十二月
var MMM = [\x01,Jan,Feb,Mar,Apr,May,Jun,Jul,Aug 十月,十一月,十二月];
var dddd = [\x02,星期日,星期一,星期二,星期三,星期四,星期五
var ddd = [\x03,Sun,Mon,Tue,Wed,Thu,Fri,Sat

函数ii(i,len){
var s = i +;
len = len || 2;
while(s.length 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.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? 上午下午;
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);

返回格式;
};


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

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.

解决方案

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

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.

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 d = new Date();
var day = days[d.getDay()];
var hr = d.getHours();
var min = d.getMinutes();
if (min < 10) {
    min = "0" + min;
}
var ampm = hr < 12 ? "am" : "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;

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");

Demo: 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天全站免登陆