今天在專案中遇到需要天、周、月的時間字串轉化為時間物件,例如:2020-01-01、2020年第01周、2020-01

具體需求如圖,點擊資料點時需要從對應的橫坐標提取時間實作資料鉆取、查看詳細資料,由于需要涉及到一些前端操作,所以轉化不能放到后端,
以下是我的解決方法
var str = "2020年第01周";varresult= str.match(/\d{1,4}/g) //匹配1~4個數字回傳一個陣列 vardate=newDate(result[0]);//得到指定年份1月1號時間 varweekDay=date.getDay();//回傳一周中的某一天(0~6) weekDay==0?7:weekDay;//0代表周日改成7 date=newDate(date.setDate(date.getDate()-(weekDay-1)));//得到指定年份第一周周一時間 varweek=parseInt(result[1]);//取出決議出來的周數 date=newDate(date.setDate(date.getDate()+((week-1))*7));//得到指定周周一時間
首先用match() 方法全域匹配獲取到年份和周數
var result = str.match(/\d{1,4}/g)

然后使用得到的年份直接new一個Date物件,可以得到那一年的1月1號的Date物件
var date = new Date(result[0]);

再用Date物件的getDay()方法獲取1月1號是這一周的第幾天
var weekDay = date.getDay();

外國人的一般習慣使用星期天作為一周的第一天,而我們一般習慣把星期一當成一周中的第一天,所以這里把0替換成7
weekDay==0?7:weekDay;
例如 2020年1月1日是星期三,距離星期一是2天,也就是weekDay-1天,從1月1日減去weekDay-1天可以得到第一周的周一時間
date = new Date(date.setDate(date.getDate()-(weekDay-1)));
在第一周的基礎上加上(week-1))*7天就能得到我們所需的時間
date = new Date(date.setDate(date.getDate()+((week-1))*7));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/227126.html
標籤:其他
上一篇:css 選擇器
