有時候咱們在跑數據時可能會遇到將指定日期變爲後一天的日期。應用場景以下:今天是4月23日17:00,我想獲取全部4月22日到23日兩天的復聯4新增預售票房信息,因此理論上咱們應該統計4月22日00:00——4月24日00:00的數據,可是用戶有可能下意識的就會選擇2二、23。
有人也許會說,加個提示不就好了何須這麼麻煩?在日期選擇裏有時候產品會要求當前日期以後的日子不可選(略槓精)那麼這種狀況下,上述需求就須要我們處理了,存在即合理hhh。那麼如何實現呢?
首先衆所周知,在編程時,日期有一個通用的標準就是時間戳(timestamp)
,時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至如今的總秒數/總毫秒數(但毫秒數更爲常見,也更加精確)。編程
思路其實很簡單,就是獲取當前時間戳A,計算一天的毫秒數B,便可得後一天的時間戳C=A+B,隨後經過C獲取年月日便可。this
在項目裏用TS寫的,不用太糾結於變量的類型聲明,其餘都差很少code
dateFormat(d: Date, str: string, isEndDate: boolean) { let mon = d.getMonth() + 1; let day = d.getDate();//設置默認的月份和天數 if (isEndDate) { //當輸入爲結束日期時,執行以下代碼 d.setTime(date.getTime() + 3600 * 24 * 1000); day = d.getDate(); mon = d.getMonth() + 1; } let monthString = mon.toString(); if (mon < 10) { //當月份小於10時,顯示月份的時候在前面加一個0 monthString = '0' + monthString; } let dayString = day.toString(); if (day < 10) { //當天數小於10時,顯示天數的時候在前面加一個0 dayString = '0' + dayString; } //根據傳進的str來返回指定的時間格式,str能夠爲任意格式的字符串 return [d.getFullYear(), monthString, dayString].join(str); } this.dateFormat(new Date(), '-', true); //當前時間爲2019年4月23日,此時輸出爲2019-4-24
Done,後期會總結一些關於日期相關計算的思路,可能簡單的就不寫code了。orm