使用new Date(),能夠看見有5種構造函數
console.log(new Date()); // 當前時間 console.log(new Date('2015-08-12 12:30'));// 字符串 console.log(new Date(12345679));//時間戳 console.log(new Date(2018, 3, 20, 12, 30));//指定年月日等
若是要建立一個時間爲當日的日期不包含時間的值
console.log(new Date(new Date().toLocaleDateString()));
一般能夠轉換成時間戳的方式進行計算
const endTime = new Date(new Date().toLocaleDateString()); let d = endTime.valueOf(); // 時間戳 d -= 7 * 24 * 60 * 60 * 1000; const startTime = new Date(d); console.log(startTime); console.log(endTime); console.log(d);
console.log(new Date().toTimeString()); console.log(new Date().toLocaleDateString()); console.log(new Date().toDateString()); console.log(new Date().getTime());
<p>如今的時間是{{today | date:'yyyy-MM-dd HH:mm:ss'}}</p>
moment.jsnode
這是一個很強大的時間插件,這裏用一個應用場景來演示。
nodejs上的時間和我本地的時間老是相差8個小時,這致使我每次發送時間到後臺時,nodejs將時間轉化成字符串傳送出去的時候老是和我服務器上的時間相差8小時。
node上顯示出來時間
本地系統顯示時間
發送前控制檯打印出來
瀏覽器
瀏覽器網絡中監測顯示
服務器
解決方案
nodejs只有在發送時間類型的數據時會進行轉換,致使相差8個小時,可是我發送前就將其轉換成字符串,就不會形成這樣的結果了。
因此對angular的http進行封裝,在發送前將body中的時間類型轉換成字符串類型網絡
post(url: string, body?: any, params?: any,headers?:any) { this.begin(); return this.http .post(url, this.parseBody(body) || null, { headers:this.parseHeaders(headers), params: this.parseParams(params) }) } parseBody(body: any) { if (body) { for (const key in body) { if (body[key]) { const _data = body[key]; // 將時間轉化爲字符串 if (moment.isDate(_data)) { body[key] = moment(_data).format('YYYY-MM-DD HH:mm:ss'); } } } } return body; }
其中用到了moment.js 的兩個方法,一個時判斷是否時時間類型moment.isDate(_data)另外一個時轉換成字符串moment(_data).format('YYYY-MM-DD HH:mm:ss');
關於更多用法能夠參考官網函數