簡體   English   中英

使用JavaScript的上周開始日期和結束日期未提供所需的結果

[英]Last week start date and end date using javascript not giving required result

我正在使用以下代碼,但返回的是上周的

開始日期= 0-4 / 09/2018

結束日期= 02/09/2018

var curr = new Date;
var first = curr.getDate() - curr.getDay(); 
var last = first + 6; 
var startDate = new Date(curr.setDate(first));
var dd1 = startDate.getDate()-6;
var mm1 = startDate.getMonth() + 1;
if(dd1<10){
     dd1='0'+dd1
} 
if(mm1<10){
     mm1='0'+mm1
}
startDate = "" + dd1 + "/" + mm1 + "/" + startDate.getFullYear();
var endDate = new Date(curr.setDate(last));
var dd2 = endDate.getDate()-6;
var mm2 = endDate.getMonth() + 1;
if(dd2<10){
    dd2='0'+dd2
} 
if(mm2<10){
    mm2='0'+mm2
 }
endDate = "" + dd2 + "/" + mm2 + "/" + endDate.getFullYear();

在獲取值之前,必須使用Date對象並將其日期設置為所需的值。 您的實現無效,因為:

  • 缺少類型轉換
  • 您無法執行Date()。getDate()-6,如果日期為1,則您將計算負值,因此對日期沒有意義。

正確的形式是:

var curr,startDate,endDate, strStartDate,strEndDate;
curr = new Date();
curr.setDate(curr.getDate()+6)

startDate = new Date(curr.getTime());
startDate.setDate(startDate.getDate()-6)

strStartDate = startDate.getDate()+"/"+(startDate.getMonth()+1)+"/"+startDate.getFullYear();


endDate = new Date(startDate.getTime());
endDate.setDate(endDate.getDate()-6);

strEndDate = endDate.getDate()+"/"+(endDate.getMonth()+1)+"/"+endDate.getFullYear();

在建議使用moment.js進行日期/時間操作時,我提供了一個基於此的解決方案。

let startDate = moment().endOf("month").startOf("isoWeek");    // Also, check .startOf("week");
let endDate = moment().endOf("month").endOf("isoWeek");    // Also, check .endOf("week");
console.log(start);    // moment object
console.log(start.format('DD-MM-YYYY'));    // date string
console.log(end);    // moment object
console.log(end.format('DD-MM-YYYY'));    // date string

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM