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


当前回答

将日期格式化为不同格式

let objectDate=新日期();let day=objectDate.getDate();console.log(天);//12let currentmo=objectDate.getMonth();月=当前月+1;console.log(月+1);//1.let year=objectDate.getFullYear();console.log(年);//2023//现在您可以相应地进行设置//日/月/年console.log(日+‘/‘+月+‘/’+年);//年/月/日console.log(月+'/'+day+'/'+年);

尝试此代码-https://bbbootstrap.com/code/format-date-javascript-49065802

其他回答

yy=2位年份;yyyy=全年

M=数字月;MM=2位月;MMM=短月份名称;MMMM=完整月份名称

EEEE=工作日全名;EEE=短工作日名称

d=数字日;dd=2位数字日

h=小时;hh=2位数小时

m=分钟;mm=2位数分钟

s=秒;ss=2位数秒

S=毫秒

使用与ClassSimpleDateFormat(Java)类似的格式

var month名称=[“一月”,“二月”,“三月”,“四月”,“五月”,“六月”,“七月”,“八月”、“九月”、“十月”、“十一月”、“十二月”];var dayOfWeekNames=[“星期日”、“星期一”、“周二”,“周三”、“周四”、“周五”、“周六”];函数formatDate(日期,formatStr){if(!formatStr){formatStr='dd/mm/yyyy';}var day=date.getDate(),month=date.getMonth(),year=date.getFullYear(),hour=date.getHours(),minute=date.getMinutes(),second=date.getSeconds(),毫秒=date.getMilliseconds(),hh=twoDigitPad(小时),mm=两个DigitPad(分钟),ss=twoDigitPad(秒),EEEE=dayOfWeekNames[date.getDay()],EEE=EEEE.substr(0,3),dd=twoDigitPad(天),M=月+1,MM=两个DigitPad(M),MMMM=monthNames[月],MMM=MMMM.substr(0,3),yyyy=年+“”,yy=yyyy.substr(2,2);返回格式Str.replace('h',hh).replace('h',hour).替换('m',mm).替换(m',分钟).替换('s',ss).替换(s'',second).replace('S',毫秒)替换('dd',dd)替换('d',day).替换('MMMM',MMMM).替换('MMM',MMM)替换('MM',MM).更换('M',M)替换('EEE',EEEE)替换('EE',EEE)替换('yyyy',yyyy).替换('yy',yy);}函数twoDigitPad(num){返回num<10?“0”+num:num;}console.log(formatDate(newDate()));console.log(formatDate(new Date(),'EEEE,MMMM d,yyyy hh:mm:ss:S'));console.log(formatDate(new Date(),'EEE,MMM d,yyyy hh:mm'));console.log(formatDate(new Date(),'yyyy-MM-dd hh:MM:ss:S'));console.log(formatDate(new Date(),'yy MM dd hh:MM'));

将日期格式化为不同格式

let objectDate=新日期();let day=objectDate.getDate();console.log(天);//12let currentmo=objectDate.getMonth();月=当前月+1;console.log(月+1);//1.let year=objectDate.getFullYear();console.log(年);//2023//现在您可以相应地进行设置//日/月/年console.log(日+‘/‘+月+‘/’+年);//年/月/日console.log(月+'/'+day+'/'+年);

尝试此代码-https://bbbootstrap.com/code/format-date-javascript-49065802

该函数的灵感来自Java的SimpleDateFormat。它提供各种格式,例如:

dd-MMM-yyyy → 17-Jul-2018
yyyyMMdd'T'HHmmssXX → 20180717T120856+0900
yyyy-MM-dd'T'HH:mm:ssXXX → 2018-07-17T12:08:56+09:00
E, dd MMM yyyy HH:mm:ss Z → Tue, 17 Jul 2018 12:08:56 +0900
yyyy.MM.dd 'at' hh:mm:ss Z → 2018.07.17 at 12:08:56 +0900
EEE, MMM d, ''yy → Tue, Jul 17, '18
h:mm a → 12:08 PM
hh 'o''''clock' a, X → 12 o'clock PM, +09

代码示例:

函数formatWith(formatStr,date,opts){if(!date){date=新日期();}opts=opts||{};let _days=opts.days;如果(!_days){_days=[星期日、星期一、星期二、星期三、星期四、星期五、星期六];}let _months=opts.months;如果(!_months){_months=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];}常量pad=(number,strDigits,isUnpad)=>{const strNum=number.toString();如果(!isUnpad&&strNum.length>strDigits.length){返回strNum;}其他{return('0000'+strNum).sslice(-strDigits.length);}};常量时区=(日期,字母)=>{常量块=[];const offset=-date.getTimezoneOffset();chunk.push(偏移量==0?“Z”:偏移量>0?“+”:“-”)//添加Z或+-如果(偏移量==0)返回块;chunk.push(pad(数学地板(偏移量/60),“00”))//小时if(letter==“X”)返回chunk.join(“”);if(letter=='XXX')chunk.push(':');chunk.push(pad((偏移量%60),'00'))//最小值return chunk.join(“”);};const ESCAPE_DELIM=“\0”;常量escapeStack=[];const escapedFmtStr=格式Str.替换(/'.*?'/g,m=>{escapeStack.push(m.replace(/'/g,''));return ESCAPE_DELIM+(escapeStack.length-1)+ESCAPE_DELIM;});常量格式化Str=转义FmtStr.replace(/y{4}| y{2}/g,m=>pad(date.getFullYear(),m,true)).replace(/M{3}/g,M=>_months[date.getMonth()]).replace(/M{1,2}/g,M=>pad(date.getMonth()+1,M)).replace(/M{1,2}/g,M=>pad(date.getMonth()+1,M)).replace(/d{1,2}/g,m=>pad(date.getDate(),m)).replace(/H{1,2}/g,m=>pad(date.getHours(),m)).替换(/h{1,2}/g,m=>{const hours=date.getHours();返回垫(小时==0?12:小时>12?小时-12:小时,m);}).replace(/a{1,2}/g,m=>date.getHours()>=12?'下午:上午).replace(/m{1,2}/g,m=>pad(date.getMinutes(),m)).replace(/s{1,2}/g,m=>pad(date.getSeconds(),m)).replace(/S{3}/g,m=>pad(date.getMilliseconds(),m)).replace(/[E]+/g,m=>_days[date.getDay()]).替换(/[Z]+/g,m=>时区(日期,m)).替换(/X{1,3}/g,m=>时区(日期,m));const unescapedStr=格式化Str.替换(/\0\d+\0/g,m=>{const unescaped=escapeStack.shift();返回unscaped.length>0?未转义:“\”;});返回unscapedStr;}//让我们用上面的函数格式化const dateStr='2018/07/17 12:08:56';const date=新日期(dateStr);常量模式=[“年-月-日”,“yyyyMMdd''HHmmssXX”,//ISO8601“yyyy-MM-dd''HH:MM:ssXXX”,//ISO8601EX“E,dd MMM yyyy HH:mm:ss Z”,//RFC1123(RFC822)类似电子邮件“yyyy.MM.dd'at'hh:MM:ss Z”,//hh显示1-12“EEE,MMM d,'yy”,“h:mm a”,“hh'o'''时钟'a,X”,];for(let模式){console.log(`${pattern}→ ${formatWith(pattern,date)}`);}

你可以把它当作图书馆

它也作为NPM模块发布。您可以在Node.js上使用它,也可以在浏览器的CDN中使用它。

节点.js

const {SimpleDateFormat} = require('@riversun/simple-date-format');

在浏览器中

<script src="https://cdn.jsdelivr.net/npm/@riversun/simple-date-format@1.0.2/dist/simple-date-format.js"></script>

按照以下步骤编写代码。

const date = new Date('2018/07/17 12:08:56');
const sdf = new SimpleDateFormat();
console.log(sdf.formatWith("yyyy-MM-dd'T'HH:mm:ssXXX", date));//to be "2018-07-17T12:08:56+09:00"

GitHub上的源代码:

https://github.com/riversun/simple-date-format

你不需要任何图书馆。只需提取日期组件并构造字符串。以下是如何获取YYYY-MM-DD格式。还要注意月份指数“一月是0,二月是1,依此类推。”

// @flow

type Components = {
  day: number,
  month: number,
  year: number
}

export default class DateFormatter {
  // YYYY-MM-DD
  static YYYY_MM_DD = (date: Date): string => {
    const components = DateFormatter.format(DateFormatter.components(date))
    return `${components.year}-${components.month}-${components.day}`
  }

  static format = (components: Components) => {
    return {
      day: `${components.day}`.padStart(2, '0'),
      month: `${components.month}`.padStart(2, '0'),
      year: components.year
    }
  }

  static components = (date: Date) => {
    return {
      day: date.getDate(),
      month: date.getMonth() + 1,
      year: date.getFullYear()
    }
  }
}

这里有一些随时可以粘贴的时间/日期格式代码,它不依赖任何外部模块/库,也不使用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]