如何将Date对象格式化为字符串?
当前回答
DateFormatter.formatDate(新日期(2010,7,10),'DD-MMM-YYYY')
=>2010年8月10日
DateFormatter.formatDate(new Date(),'YYYY-MM-DD HH:MM:ss')
=>2017-11-22 19:52:37
DateFormatter.formatDate(新日期(2005,1,2,3,4,5),'D DD DDD DDD,M MM MMM MMMM,YY YYYY,h hh h hh,M MM,s ss,a a')
=>2002年2月2日星期三2005年2月5日,2003年3月3日,4月4日,5月5日上午
var日期格式设置工具={月份名称:[“一月”,“二月”,“三月”,“四月”,“五月”,“六月”,“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”],dayName:[“星期日”、“星期一”、“周二”、“周三”、“周四”、“周五”、“周六”],formatDate:函数(日期,格式){var self=this;format=self.getProperDigits(format,/d+/gi,date.getDate());format=self.getProperDigits(格式,/M+/g,date.getMonth()+1);format=format.replace(/y+/gi,函数(y){var len=y.length;var year=date.getFullYear();如果(长度==2)return(年份+“”).sslice(-2);否则如果(len==4)回归年;返回y;})format=self.getProperDigits(格式,/H+/g,date.getHours());format=self.getProperDigits(格式,/h+/g,self.getHours12(date.getHours()));format=self.getProperDigits(format,/m+/g,date.getMinutes());format=self.getProperDigits(format,/s+/gi,date.getSeconds());format=format.replace(/a/ig,函数(a){var amPm=self.getAmPm(date.getHours())如果(a==“a”)返回amPm.toUpperCase();返回amPm;})format=self.getFullOr3Letters(format,/d+/gi,self.dayNames,date.getDay())format=self.getFullOr3Letters(format,/M+/g,self.monthNames,date.getMonth())返回格式;},getProperDigits:函数(格式、正则表达式、值){return format.replace(正则表达式,函数(m){var长度=m.length;如果(长度==1)返回值;否则如果(长度==2)return(“0”+值).sslice(-2);返回m;})},getHours12:函数(小时){// https://stackoverflow.com/questions/10556879/changing-the-1-24-hour-to-1-12-hour-for-the-gethours-method返回(小时+24)%12||12;},getAmPm:函数(小时){// https://stackoverflow.com/questions/8888491/how-do-you-display-javascript-datetime-in-12-hour-am-pm-format回程时间>=12?'下午':'上午';},getFullOr3Letters:函数(格式,正则表达式,名称数组,值){return format.replace(正则表达式,函数){var len=s.length;如果(长度==3)return nameArray[value].substr(0,3);否则如果(len==4)return nameArray[value];返回s;})}}console.log(DateFormatter.formatDate(new Date(),'YYYY-MM-DD HH:MM:ss'));console.log(DateFormatter.formatDate(new Date(),'D DD DDD DDDD,M MM MMM MMMM,YY YYYY,h hh h hh,M MM,s ss,a a'));console.log(DateFormatter.formatDate(新日期(2005,1,2,3,4,5),'D DD DDD DDDD,M MM MMM MMMM,YY YYYY,h hh h hh,M MM,s ss,a a'));
格式描述取自Ionic Framework(它不支持Z、UTC时区偏移)
未彻底测试
其他回答
你应该看看DayJs。它是momentJs的翻版,但模块化架构更轻。
快速2kB替代Moment.js,具有相同的现代API
Day.js是一个极简的JavaScript库,它使用Moment.js兼容的API为现代浏览器解析、验证、操作和显示日期和时间。如果您使用Moment.js,您已经知道如何使用Day.js。
var date=date.now();const formatedDate=dayjs(日期).format(“YYYY-MM-DD”)console.log(formatedDate);<script src=“https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.16/dayjs.min.js“crossoorigin=”匿名“></script>
这里有一些随时可以粘贴的时间/日期格式代码,它不依赖任何外部模块/库,也不使用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]
这是我实现npm插件的方式
var monthNames = [
"January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"
];
var Days = [
"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"
];
var formatDate = function(dt,format){
format = format.replace('ss', pad(dt.getSeconds(),2));
format = format.replace('s', dt.getSeconds());
format = format.replace('dd', pad(dt.getDate(),2));
format = format.replace('d', dt.getDate());
format = format.replace('mm', pad(dt.getMinutes(),2));
format = format.replace('m', dt.getMinutes());
format = format.replace('MMMM', monthNames[dt.getMonth()]);
format = format.replace('MMM', monthNames[dt.getMonth()].substring(0,3));
format = format.replace('MM', pad(dt.getMonth()+1,2));
format = format.replace(/M(?![ao])/, dt.getMonth()+1);
format = format.replace('DD', Days[dt.getDay()]);
format = format.replace(/D(?!e)/, Days[dt.getDay()].substring(0,3));
format = format.replace('yyyy', dt.getFullYear());
format = format.replace('YYYY', dt.getFullYear());
format = format.replace('yy', (dt.getFullYear()+"").substring(2));
format = format.replace('YY', (dt.getFullYear()+"").substring(2));
format = format.replace('HH', pad(dt.getHours(),2));
format = format.replace('H', dt.getHours());
return format;
}
pad = function(n, width, z) {
z = z || '0';
n = n + '';
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
}
对于自定义分隔日期格式,必须拉出日期(或时间)DateTimeFormat对象(它是ECMAScript国际化API),然后手动创建字符串使用所需的分隔符。
为此,可以使用DateTimeFormat#formatToParts。你可以销毁数组,但这并不理想,因为数组输出取决于区域设置:
{//示例1设f=新Intl.DateTimeFormat('en');让a=f.formatToParts();控制台日志(a);}{//示例2设f=新Intl.DateTimeFormat('hi');让a=f.formatToParts();控制台日志(a);}
最好将格式数组映射到结果字符串:
函数连接(t,a,s){函数格式(m){设f=新Intl.DateTimeFormat('en',m);返回f.format(t);}返回.map(格式).join(s);}让a=〔{日:‘数字’},{月:‘短’}、{年:‘数字”}〕;let s=join(新日期,a,'-');console.log;
还可以使用DateTimeFormat#格式,但请注意,使用此方法时,截至3月2020年,当涉及到分钟和秒的前导零(该方法避免了此错误以上)。
设d=新日期(2010,7,5);let ye=新Intl.DateTimeFormat('en',{year:'numeric'}).format(d);let mo=新Intl.DateTimeFormat('en',{month:'short'}).format(d);let da=新Intl.DateTimeFormat('en',{day:'2-位'}).format(d);console.log(`${da}--${mo}-${ye}');
在处理日期和时间时,通常值得使用库(例如,luxon、date fns、moment.js不建议用于新项目),因为该领域有许多隐藏的复杂性。
注意,上述解决方案中使用的ECMAScript国际化APIIE10不支持(2月全球浏览器市场份额为0.03%)2020).
将日期格式化为不同格式
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
推荐文章
- 如何将两个字符串相加,就好像它们是数字一样?
- 绑定多个事件到一个监听器(没有JQuery)?
- 在JavaScript中将JSON字符串解析为特定对象原型
- 将字符串“true”/“false”转换为布尔值
- 如何使用JavaScript代码获得浏览器宽度?
- event.preventDefault()函数在IE中无法工作
- indexOf()和search()的区别是什么?
- 错误:'types'只能在.ts文件中使用- Visual Studio Code使用@ts-check
- React-Native:应用程序未注册错误
- LoDash:从对象属性数组中获取值数组
- src和dist文件夹的作用是什么?
- jQuery UI对话框-缺少关闭图标
- SQL Developer只返回日期,而不是时间。我怎么解决这个问题?
- 如何使用AngularJS获取url参数
- 将RGB转换为白色的RGBA