如何将Date对象格式化为字符串?


当前回答

Javascript Intl.DateTimeFormat方法提供了一种格式化日期的方便方法。

以下是如何构建所需格式:

常量日期=新日期(“2010-08-10”);let d=新Intl.DateTimeFormat('en-GB',{年:“数字”,月:“短”,日:“2位数”}).format(日期).split(“”).join(“-”);console.log(d);

其他回答

如果您已经在项目中使用jQuery UI,您可以这样做:

var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));

// formatted will be 'Jul 8, 2014'

这里提供了一些可以使用的日期选择器日期格式选项。

一个简单的函数,可以返回日期、日期+时间或仅返回时间:

var myDate = dateFormatter("2019-01-24 11:33:24", "date-time");
// >> RETURNS "January 24, 2019 11:33:24"

var myDate2 = dateFormatter("2019-01-24 11:33:24", "date");
// >> RETURNS "January 24, 2019"

var myDate3 = dateFormatter("2019-01-24 11:33:24", "time");
// >> RETURNS "11:33:24"


function dateFormatter(strDate, format){
    var theDate = new Date(strDate);
    if (format=="time")
       return getTimeFromDate(theDate);
    else{
       var dateOptions = {year:'numeric', month:'long', day:'numeric'};
       var formattedDate = theDate.toLocaleDateString("en-US", + dateOptions);
       if (format=="date")
           return formattedDate;
       return formattedDate + " " + getTimeFromDate(theDate);
    }
}

function getTimeFromDate(theDate){
    var sec = theDate.getSeconds();
    if (sec<10)
        sec = "0" + sec;
    var min = theDate.getMinutes();
    if (min<10)
        min = "0" + min;
    return theDate.getHours() + ':'+ min + ':' + sec;
}

嗯,我想要的是将今天的日期转换为MySQL友好的日期字符串,如2012-06-23,并在我的一个查询中使用该字符串作为参数。我找到的简单解决方案是:

var today = new Date().toISOString().slice(0, 10);

请记住,上述解决方案没有考虑您的时区偏移。

您可以考虑改用此函数:

function toJSONLocal (date) {
    var local = new Date(date);
    local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return local.toJSON().slice(0, 10);
}

这将为您提供正确的日期,以防您在一天的开始/结束时执行此代码。

var date=新日期();函数到本地(日期){var local=新日期(日期);local.setMinutes(date.getMinutes()-date.getTimezoneOffset());return local.toJSON();}函数到JSONLocal(日期){var local=新日期(日期);local.setMinutes(date.getMinutes()-date.getTimezoneOffset());return local.toJSON().slice(0,10);}//查看您的devtools控制台console.log(date.toJSON());console.log(date.toISOString());console.log(toLocal(日期));console.log(toJSONLocal(日期));

日期.toISOString日期.toJSON字符串切片外部示例

这是修改为3个字符月和2位数年的主要答案:

函数formatDate(日期){var monthNames=[“一月”,“二月”,“三月”,“四月”,“五月”,“六月”,“七月”,“八月”,“九月”,“十月”,“十一月”,“十二月”];var day=date.getDate(),monthIndex=date.getMonth(),year=date.getFullYear().toString().substr(-2);return day+''+monthNames[monthIndex]+''+年;}document.write(formatDate(newDate()));

这里有一些随时可以粘贴的时间/日期格式代码,它不依赖任何外部模块/库,也不使用jQuery或ES7或任何东西。与其他答案中的代码不同,此代码提供了以下功能组合:

它将JavaScript Date对象作为输入它可以将日期显示为本地时区或UTC它使用了一个简单的格式化系统“{year4}{month02}{second}”,即使在编写代码后也很容易阅读和理解,而不像典型的“%D%m%-”,它总是强制您返回文档格式化系统不像某些特殊的“DD-MM-YYYY”系统那样具有任何奇怪的自冲突你可以在这里运行测试并尝试

//format_date(日期、模式、utc)//-日期//-JavaScript Date对象//-对当前时间使用“new Date()”//-模式//-嵌入{代码}的字符串,如//“{year4}-{month02}-{day02}:{dayname3}”//有关完整列表,请参阅下面的format_date_funcs//-其他字母不变//-utc//-如果为真,则显示UTC时间“区域”中的日期//-如果为假/忽略,则显示本地时区中的日期//变量月名称=[“一月”,“二月”,“三月”,“四月”,“五月”,“六月”,“七月”,“八月”、“九月”、“十月”、“十一月”、“十二月”];var星期名称=[“星期日”、“星期一”、“周二”,“周三”、“周四”、“周五”、“周六”];函数空间_pad2(num){返回num<10?“”+num:num;}函数zero_pad2(num){返回num<10?“0”+num:num;}函数空间_pad3(num){如果(num<10)return“”+num;否则,如果(num<100)return“”+num;其他的返回num;}函数zero_pad3(num){如果(num<10)return“00”+num;否则,如果(num<100)返回“0”+num;其他的返回num;}变量格式_日期_函数={//{year4}=“1902”//{year02}=“02”//“year4”:函数(日期,utc){var年=utc?date.getUTCFullYear():date.getFullYear();回归年;},“year02”:函数(日期,utc){var年=utc?date.getUTCFullYear():date.getFullYear();return year.toString().substr(2,2);},//{月}=“1”-“12”//{month2}=“1”-“12”(空格填充)//{month02}=“01”-“12”//“月”:函数(日期,utc){var月=utc?date.getUTCMonth():date.getMonth();//[0,11]回归月+1;},'month2':函数(日期,utc){var月=utc?date.getUTCMonth():date.getMonth();//[0,11]return space_pad2(月+1);},“month02”:函数(日期,utc){var月=utc?date.getUTCMonth():date.getMonth();//[0,11]返回zero_pad2(月+1);},//{monthname}=“一月”//{monthname3}=“一月”//“monthname”:函数(日期,utc){var月=utc?date.getUTCMonth():date.getMonth();//[0,11]return month_names[月];},“monthname3”:函数(日期,utc){var月=utc?date.getUTCMonth():date.getMonth();//[0,11]return month_names[month].substr(0,3);},//{day}=“1”-“31”//{day2}=“1”-“31”(空格填充)//{day02}=“01”-“31”//“day”:函数(日期,utc){var日期=utc?date.getUTCDate():date.getDate();//[1,31]返回日期;},“day2”:函数(日期,utc){var日期=utc?date.getUTCDate():date.getDate();//[1,31]return space_pad2(日期);},“day02”:函数(日期,utc){var日期=utc?date.getUTCDate():date.getDate();//[1,31]返回zero_pad2(日期);},//{dayname}=“星期二”//{dayname3}=“星期二”//“dayname”:函数(日期,utc){var日=utc?date.getUTCDay():date.getDay();//[0,6]返回day_of_wweek_names[day];},“dayname3”:函数(日期,utc){var日=utc?date.getUTCDay():date.getDay();//[0,6]返回day_of_wweek_names[day].substr(0,3);},//{24小时}=“0”-“23”//{24小时2}=“0”-“23”(空格填充)//{24小时02}=“00”-“23”//“24小时”:函数(日期,utc){var小时=utc?date.getUTCHours():date.getHours();//[0,23]回程时间;},“24小时2”:功能(日期,utc){var小时=utc?date.getUTCHours():date.getHours();//[0,23]返回space_pad2(小时);},“24小时02”:功能(日期,utc){var小时=utc?date.getUTCHours():date.getHours();//[0,23]返回zero_pad2(小时);},//{12小时}=“1”-“12”//{12小时2}=“1”-“12”(空格填充)//{12小时02}=“01”-“12”//{ampm}=“上午”或“下午”//{AMPM}=“AM”或“PM”//“12小时”:函数(日期,utc){var小时=utc?date.getUTCHours():date.getHours();//[0,23]小时=小时%12;//[0,11]如果(0===小时)小时=12;回程时间;},“12小时2”:功能(日期,utc){var小时=utc?date.getUTCHours():date.getHours();//[0,23]小时=小时%12;//[0,11]如果(0===小时)小时=12;返回space_pad2(小时);},“12小时02”:功能(日期,utc){var小时=utc?date.getUTCHours():date.getHours();//[0,23]小时=小时%12;//[0,11]如果(0===小时)小时=12;返回zero_pad2(小时);},“ampm”:函数(日期,utc){var小时=utc?date.getUTCHours():date.getHours();//[0,23]返回(小时<12?“上午”:“下午”);},“AMPM”:函数(日期,utc){var小时=utc?date.getUTCHours():date.getHours();//[0,23]返回(小时<12?“AM”:“PM”);},//{分钟}=“0”-“59”//{minute2}=“0”-“59”(空格填充)//{minute02}=“00”-“59”//“minute”:函数(日期,utc){var分钟=utc?date.getUTCMinutes():date.getMinutes();//[0,59]返回分钟;},“minute2”:函数(日期,utc){var分钟=utc?date.getUTCMinutes():date.getMinutes();//[0,59]返回space_pad2(分钟);},“minute02”:函数(日期,utc){var分钟=utc?date.getUTCMinutes():date.getMinutes();//[0,59]返回zero_pad2(分钟);},//{second}=“0”-“59”//{second2}=“0”-“59”(空格填充)//{second02}=“00”-“59”//“秒”:函数(日期,utc){var秒=utc?date.getUTCSeconds():date.getSeconds();//[0,59]