JS中的时间骚操作知道少 Don’t Panic
(以当前日期new Date()为例。也可以将例中new Date()换成任意Date对象)
var startDate= new Date(new Date().toLocaleDateString());
|
var lastM =new Date(new Date().setMonth(new Date().getMonth()-1));
|
var lastM_start =new Date(new Date(new Date().toLocaleDateString()).setMonth(new Date().getMonth()-1));
|
var yesterday = new Date(new Date().setDate(new Date().getDate()-1));
|
var endDate = new Date(new Date(new Date().toLocaleDateString()).getTime()+24*60*60*1000-1);
|
var yes_endDate = new Date(new Date(new Date(new Date().setDate(new Date().getDate()-1)).toLocaleDateString()).getTime()+24*60*60*1000-1);
|
Date.prototype.Format = function(fmt) { var o = { "M+" : this.getMonth()+1, "d+" : this.getDate(), "h+" : this.getHours(), "m+" : this.getMinutes(), "s+" : this.getSeconds(), "q+" : Math.floor((this.getMonth()+3)/3), "S" : this.getMilliseconds() }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; }
|
- JavaScript toLocaleString() 方法
定义和用法
toLocaleString() 方法可根据本地时间把 Date 对象转换为字符串,并返回结果。
返回值
dateObject 的字符串表示,以本地时间区表示,并根据本地规则格式化。
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
alert(date.toLocaleString("en-US"));
alert(date.toLocaleString("en-GB"));
alert(date.toLocaleString("ko-KR"));
|
- 该方法时区不同,所得到的年月会不同。配合Date.getTime()获得的(返回 1970 年 1 月 1 日至今的毫秒数。)也会发生巨大变化;
Date.prototype.toLocaleDateString()
new Date().toLocaleTimeString() new Date().toLocaleDateString() new Date().toLocaleString()
new Date(e.createdTime).toLocaleString('zh-CN', { hour12: false });
|
更多
显示日期+显示星期+显示不同地区语言
{{formatDate('2020/10/18')}}</p> formatDate(date) { const options = { year: 'numeric', month: 'long', day: 'numeric' } return new Date(date).toLocaleDateString('zh-CN', options) } //结果: 2020年10月18日
|
{{formatDate('2020/10/18')}}</p>
formatDate(date) { const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } return new Date(date).toLocaleDateString('zh-CN', options) }
//结果: 2020年10月18日星期日
|
{{formatDate('2020/10/18')}}</p>
formatDate(date) { const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } return new Date(date).toLocaleDateString('en-US', options) } // 结果: Sunday, October 18, 2020
|
{{formatDate('2020/10/18')}}</p>
formatDate(date) { const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' } return new Date(date).toLocaleDateString('en-US', options) }
|
options
- dateStyle:可能的值为full、long、medium、short。
- timeStyle:可能的值为full、long、medium、short。
- month:可能的值为numeric、2-digit、long、short、narrow。
- year:可能的值为numeric、2-digit。
- weekday:可能的值为long、short、narrow。
- day、hour、minute、second:可能的值为numeric、2-digit。
- timeZone:可能的值为 IANA 的时区数据库。
- timeZooneName:可能的值为long、short。
- hour12:24小时周期还是12小时周期,可能的值为true、false
new Date().toLocaleDateString('zh-CN', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })
new Date().toLocaleTimeString('zh-CN', { timeZone: 'Asia/Shanghai', hour12: false, timeZoneName: 'long' })
new Date().toLocaleTimeString('zh-CN', { timeZone: 'Asia/Shanghai', hour12: true, day: 'numeric' })
|
扩展+分割+显示不同单位如美元人民币+控制小数位
在Number的原型上也有这个方法toLocaleString,即Number.prototype.toLocaleString()
const price = 12345678; price.toLocaleString();
|
var price = 2499; price.toLocaleString('zh-CN', { style: 'currency', currency: 'RMB' });
var price = 2499; price.toLocaleString('zh-CN', { style: 'currency', currency: 'USD' });
|
var price = 2499; price.toLocaleString('zh-CN', { style: 'currency', currency: 'KNS', minimumFractionDigits:3 });
|
<td *ngFor="let col of columns" [ngSwitch]="col.field"> <div *ngSwitchCase="'create_time'">{{ rowData[col.field] | date: 'yyyy-MM-dd HH:mm:ss':'GMT+08:00' }}div> <div *ngSwitchDefault>{{ rowData[col.field] }}div> td>
|
– 当然,服务器可能会设置不是zh-CN这时就需要转换时区
new Date(new Date(value).toLocaleString("en-US")).getTime();
this.filter.time ? `[${this.filter.time},${this.filter.time + 1000}]` : ''
|