Hướng dẫn what is the first day of the week javascript? - javascript ngày đầu tiên của tuần là gì?

212

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi cần cách nhanh nhất để có được ngày đầu tiên trong tuần. Ví dụ: Hôm nay là ngày 11 tháng 11 và thứ năm; Và tôi muốn ngày đầu tiên của tuần này, đó là ngày 8 tháng 11 và thứ Hai. Tôi cần phương pháp nhanh nhất cho chức năng bản đồ MongoDB, bất kỳ ý tưởng nào?

Hướng dẫn what is the first day of the week javascript? - javascript ngày đầu tiên của tuần là gì?

Hỏi ngày 11 tháng 11 năm 2010 lúc 16:06Nov 11, 2010 at 16:06

4

Sử dụng phương thức

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
4 của các đối tượng ngày, bạn có thể biết số ngày trong tuần (là 0 = Chủ nhật, 1 = Thứ Hai, v.v.).

Sau đó, bạn có thể trừ đi số ngày đó cộng với một ngày, ví dụ:

function getMonday(d) {
  d = new Date(d);
  var day = d.getDay(),
      diff = d.getDate() - day + (day == 0 ? -6:1); // adjust when day is sunday
  return new Date(d.setDate(diff));
}

getMonday(new Date()); // Mon Nov 08 2010

Zach Dwiel

5301 Huy hiệu vàng4 Huy hiệu bạc18 Huy hiệu đồng1 gold badge4 silver badges18 bronze badges

Đã trả lời ngày 11 tháng 11 năm 2010 lúc 16:13Nov 11, 2010 at 16:13

11

Không chắc chắn làm thế nào nó so sánh cho hiệu suất, nhưng điều này hoạt động.

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday

Hoặc là một chức năng:

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());

Hướng dẫn what is the first day of the week javascript? - javascript ngày đầu tiên của tuần là gì?

ngay đơ

11.9k3 Huy hiệu vàng33 Huy hiệu bạc48 Huy hiệu đồng3 gold badges33 silver badges48 bronze badges

Đã trả lời ngày 11 tháng 11 năm 2010 lúc 16:19Nov 11, 2010 at 16:19

user113716user113716user113716

Phù bằng vàng 314K6161 gold badges444 silver badges436 bronze badges

5

Câu trả lời của CMS là chính xác nhưng giả định rằng thứ Hai là ngày đầu tiên trong tuần. Câu trả lời của Chandler Zwolle là chính xác nhưng fiddles với nguyên mẫu ngày. Các câu trả lời khác mà thêm/trừ giờ/phút/giây/mili giây là sai vì không phải tất cả các ngày đều có 24 giờ.
Chandler Zwolle's answer is correct but fiddles with the Date prototype.
Other answers that add/subtract hours/minutes/seconds/milliseconds are wrong because not all days have 24 hours.

Hàm dưới đây là chính xác và lấy ngày làm tham số đầu tiên và ngày đầu tiên mong muốn trong tuần là tham số thứ hai (0 cho Chủ nhật, 1 cho thứ Hai, v.v.). Lưu ý: Giờ, phút và giây được đặt thành 0 để có đầu ngày.

function firstDayOfWeek(dateObject, firstDayOfWeekIndex) {

    const dayOfWeek = dateObject.getDay(),
        firstDayOfWeek = new Date(dateObject),
        diff = dayOfWeek >= firstDayOfWeekIndex ?
            dayOfWeek - firstDayOfWeekIndex :
            6 - dayOfWeek

    firstDayOfWeek.setDate(dateObject.getDate() - diff)
    firstDayOfWeek.setHours(0,0,0,0)

    return firstDayOfWeek
}

// August 18th was a Saturday
let lastMonday = firstDayOfWeek(new Date('August 18, 2018 03:24:00'), 1)

// outputs something like "Mon Aug 13 2018 00:00:00 GMT+0200"
// (may vary according to your time zone)
document.write(lastMonday)

Đã trả lời ngày 19 tháng 8 năm 2018 lúc 14:05Aug 19, 2018 at 14:05

Louis Amelinelouis AmelineLouis Ameline

2.6791 Huy hiệu vàng22 Huy hiệu bạc25 Huy hiệu đồng1 gold badge22 silver badges25 bronze badges

2

Ngày đầu tiên / cuối cùng trong tuần

Để có được ngày đầu tiên sắp tới trong tuần, bạn có thể sử dụng một cái gì đó như vậy:

function getUpcomingSunday() {
  const date = new Date();
  const today = date.getDate();
  const currentDay = date.getDay();
  const newDate = date.setDate(today - currentDay + 7);
  return new Date(newDate);
}

console.log(getUpcomingSunday());

Hoặc để có được ngày đầu tiên mới nhất:

function getLastSunday() {
  const date = new Date();
  const today = date.getDate();
  const currentDay = date.getDay();
  const newDate = date.setDate(today - (currentDay || 7));
  return new Date(newDate);
}

console.log(getLastSunday());

* Tùy thuộc vào múi giờ của bạn, đầu tuần không phải bắt đầu vào Chủ nhật, nó có thể bắt đầu vào thứ Sáu, thứ Bảy, thứ Hai hoặc bất kỳ ngày nào khác mà máy của bạn được thiết lập. Những phương pháp đó sẽ giải thích cho điều đó.

* Bạn cũng có thể định dạng nó bằng phương thức

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
5 như vậy:
# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
6

Đã trả lời ngày 15 tháng 2 năm 2020 lúc 20:57Feb 15, 2020 at 20:57

Lior Elromlior ElromLior Elrom

18,5K16 Huy hiệu vàng76 Huy hiệu bạc90 Huy hiệu Đồng16 gold badges76 silver badges90 bronze badges

Kiểm tra ngày.js

Date.today().previous().monday()

Đã trả lời ngày 11 tháng 11 năm 2010 lúc 16:09Nov 11, 2010 at 16:09

MattmattMatt

40.7K29 Huy hiệu vàng108 Huy hiệu bạc147 Huy hiệu đồng29 gold badges108 silver badges147 bronze badges

5

var dt = new Date(); // current date of week
var currentWeekDay = dt.getDay();
var lessDays = currentWeekDay == 0 ? 6 : currentWeekDay - 1;
var wkStart = new Date(new Date(dt).setDate(dt.getDate() - lessDays));
var wkEnd = new Date(new Date(wkStart).setDate(wkStart.getDate() + 6));

Điều này sẽ hoạt động tốt.

Đã trả lời ngày 3 tháng 5 năm 2017 lúc 5:29May 3, 2017 at 5:29

Parth Shahparth ShahParth Shah

1211 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

Tôi đang sử dụng cái này

function get_next_week_start() {
   var now = new Date();
   var next_week_start = new Date(now.getFullYear(), now.getMonth(), now.getDate()+(8 - now.getDay()));
   return next_week_start;
}

Đã trả lời ngày 24 tháng 7 năm 2014 lúc 9:03Jul 24, 2014 at 9:03

Hướng dẫn what is the first day of the week javascript? - javascript ngày đầu tiên của tuần là gì?

1nstinct1nstinct1nstinct

1.6201 Huy hiệu vàng22 Huy hiệu bạc 30 Huy hiệu Đồng1 gold badge22 silver badges30 bronze badges

Chức năng này sử dụng thời gian hiện tại một phần tư giây để trừ đi tuần hiện tại và sau đó trừ đi thêm một tuần nếu ngày hiện tại vào thứ Hai (số lượng JavaScript từ Chủ nhật).

function getMonday(fromDate) {
    // length of one day i milliseconds
  var dayLength = 24 * 60 * 60 * 1000;

  // Get the current date (without time)
    var currentDate = new Date(fromDate.getFullYear(), fromDate.getMonth(), fromDate.getDate());

  // Get the current date's millisecond for this week
  var currentWeekDayMillisecond = ((currentDate.getDay()) * dayLength);

  // subtract the current date with the current date's millisecond for this week
  var monday = new Date(currentDate.getTime() - currentWeekDayMillisecond + dayLength);

  if (monday > currentDate) {
    // It is sunday, so we need to go back further
    monday = new Date(monday.getTime() - (dayLength * 7));
  }

  return monday;
}

Tôi đã thử nghiệm nó khi tuần kéo dài từ tháng này sang tháng khác (và cả năm), và nó dường như hoạt động đúng.

Đã trả lời ngày 19 tháng 5 năm 2016 lúc 21:13May 19, 2016 at 21:13

Hướng dẫn what is the first day of the week javascript? - javascript ngày đầu tiên của tuần là gì?

Einordeinordeinord

2.1332 Huy hiệu vàng19 Huy hiệu bạc26 Huy hiệu đồng2 gold badges19 silver badges26 bronze badges

Chào buổi tối,

Tôi thích chỉ có một phương pháp mở rộng đơn giản:

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
0

Bạn sẽ nhận thấy điều này thực sự sử dụng một phương pháp mở rộng khác mà tôi sử dụng:

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
1

Bây giờ, nếu tuần của bạn bắt đầu vào Chủ nhật, hãy vượt qua "0" cho tham số PstartofWeek, như vậy:

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
7

Tương tự, nếu tuần của bạn bắt đầu vào thứ Hai, hãy vượt qua "1" cho tham số pstartofweek:

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
8

Regards,

Đã trả lời ngày 3 tháng 6 năm 2016 lúc 19:09Jun 3, 2016 at 19:09

Chandler Zwollechandler ZwolleChandler Zwolle

1.5751 Huy hiệu vàng10 Huy hiệu bạc8 Huy hiệu đồng1 gold badge10 silver badges8 bronze badges

Trở lại Thứ Hai 00 sáng đến Thứ Hai 00 sáng.

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
2

Đã trả lời ngày 22 tháng 6 năm 2021 lúc 13:58Jun 22, 2021 at 13:58

Hướng dẫn what is the first day of the week javascript? - javascript ngày đầu tiên của tuần là gì?

MarcosmarcosMarcos

6878 Huy hiệu bạc12 Huy hiệu Đồng8 silver badges12 bronze badges

1

setDate () có các vấn đề với ranh giới tháng được ghi nhận trong các bình luận ở trên. Một cách giải quyết sạch sẽ là tìm sự khác biệt ngày bằng cách sử dụng dấu thời gian sử dụng thay vì các phương pháp (phản trực giác đáng ngạc nhiên) trên đối tượng ngày. I E.

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
3

Đã trả lời ngày 2 tháng 6 năm 2016 lúc 23:51Jun 2, 2016 at 23:51

Hướng dẫn what is the first day of the week javascript? - javascript ngày đầu tiên của tuần là gì?

Jtschoonhovenjtschoonhovenjtschoonhoven

1.5921 Huy hiệu vàng16 Huy hiệu bạc14 Huy hiệu đồng1 gold badge16 silver badges14 bronze badges

Đây là giải pháp của tôi:

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
4

Bây giờ bạn có thể chọn ngày bằng chỉ mục Array đã trả về.

Đã trả lời ngày 28 tháng 7 năm 2016 lúc 12:58Jul 28, 2016 at 12:58

Một ví dụ về tính toán chỉ toán học, không có bất kỳ chức năng

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
9 nào.

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
5

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
6

Đã trả lời ngày 22 tháng 4 năm 2020 lúc 22:16Apr 22, 2020 at 22:16

1

Một phiên bản tổng quát hơn của điều này ... Điều này sẽ cung cấp cho bạn bất kỳ ngày nào trong tuần hiện tại dựa trên ngày bạn chỉ định.

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
7

Đã trả lời ngày 14 tháng 7 năm 2020 lúc 16:11Jul 14, 2020 at 16:11

AndyandyAndy

Phù hiệu 931 Bạc11 Huy hiệu Đồng1 silver badge11 bronze badges

1

Giải pháp đơn giản để có được ngày đầu tiên trong tuần.

Với giải pháp này, có thể thiết lập một khởi đầu tùy ý của tuần (ví dụ: Chủ nhật = 0, Thứ Hai = 1, Thứ Ba = 2, v.v.).

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
8
  • Giải pháp kết thúc chính xác vào tháng (do
    function firstDayOfWeek(dateObject, firstDayOfWeekIndex) {
    
        const dayOfWeek = dateObject.getDay(),
            firstDayOfWeek = new Date(dateObject),
            diff = dayOfWeek >= firstDayOfWeekIndex ?
                dayOfWeek - firstDayOfWeekIndex :
                6 - dayOfWeek
    
        firstDayOfWeek.setDate(dateObject.getDate() - diff)
        firstDayOfWeek.setHours(0,0,0,0)
    
        return firstDayOfWeek
    }
    
    // August 18th was a Saturday
    let lastMonday = firstDayOfWeek(new Date('August 18, 2018 03:24:00'), 1)
    
    // outputs something like "Mon Aug 13 2018 00:00:00 GMT+0200"
    // (may vary according to your time zone)
    document.write(lastMonday)
    0 đang được sử dụng)
  • Đối với
    function firstDayOfWeek(dateObject, firstDayOfWeekIndex) {
    
        const dayOfWeek = dateObject.getDay(),
            firstDayOfWeek = new Date(dateObject),
            diff = dayOfWeek >= firstDayOfWeekIndex ?
                dayOfWeek - firstDayOfWeekIndex :
                6 - dayOfWeek
    
        firstDayOfWeek.setDate(dateObject.getDate() - diff)
        firstDayOfWeek.setHours(0,0,0,0)
    
        return firstDayOfWeek
    }
    
    // August 18th was a Saturday
    let lastMonday = firstDayOfWeek(new Date('August 18, 2018 03:24:00'), 1)
    
    // outputs something like "Mon Aug 13 2018 00:00:00 GMT+0200"
    // (may vary according to your time zone)
    document.write(lastMonday)
    1, các số không đổi giống như trong
    function firstDayOfWeek(dateObject, firstDayOfWeekIndex) {
    
        const dayOfWeek = dateObject.getDay(),
            firstDayOfWeek = new Date(dateObject),
            diff = dayOfWeek >= firstDayOfWeekIndex ?
                dayOfWeek - firstDayOfWeekIndex :
                6 - dayOfWeek
    
        firstDayOfWeek.setDate(dateObject.getDate() - diff)
        firstDayOfWeek.setHours(0,0,0,0)
    
        return firstDayOfWeek
    }
    
    // August 18th was a Saturday
    let lastMonday = firstDayOfWeek(new Date('August 18, 2018 03:24:00'), 1)
    
    // outputs something like "Mon Aug 13 2018 00:00:00 GMT+0200"
    // (may vary according to your time zone)
    document.write(lastMonday)
    2 có thể được sử dụng

Đã trả lời ngày 2 tháng 2 lúc 14:40Feb 2 at 14:40

SquarebracketsSquareBracketssquarebrackets

9271 Huy hiệu vàng11 Huy hiệu bạc19 Huy hiệu đồng1 gold badge11 silver badges19 bronze badges

Điều quan trọng là phải phân biệt giữa thời gian địa phương và UTC. Tôi muốn tìm sự khởi đầu của tuần ở UTC, vì vậy tôi đã sử dụng chức năng sau.

var today = new Date();
var day = today.getDay() || 7; // Get current day number, converting Sun. to 7
if( day !== 1 )                // Only manipulate the date if it isn't Mon.
    today.setHours(-24 * (day - 1));   // Set the hours to day number minus 1
                                         //   multiplied by negative 24
alert(today); // will be Monday
9

Để tìm sự khởi đầu của tuần trong một múi giờ nhất định, trước tiên hãy thêm phần bù múi giờ vào ngày đầu vào và sau đó trừ nó từ ngày đầu ra.

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
0

Đã trả lời ngày 11 tháng 7 lúc 1:26Jul 11 at 1:26

Diachedelicdiachedelicdiachedelic

1.9491 Huy hiệu vàng23 Huy hiệu bạc24 Huy hiệu đồng1 gold badge23 silver badges24 bronze badges

2

Tôi sử dụng cái này:

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
1

Nó hoạt động tốt.

Đã trả lời ngày 11 tháng 8 năm 2021 lúc 20:48Aug 11, 2021 at 20:48

Hướng dẫn what is the first day of the week javascript? - javascript ngày đầu tiên của tuần là gì?

O'NielO'NielO'Niel

1.4041 Huy hiệu vàng16 Huy hiệu bạc31 Huy hiệu đồng1 gold badge16 silver badges31 bronze badges

1

Câu trả lời được chấp nhận sẽ không hoạt động cho bất kỳ ai chạy mã trong UTC-XX: XX Timezone.

Đây là mã sẽ hoạt động bất kể thời gian chỉ cho ngày. Điều này sẽ không hoạt động nếu bạn cũng cung cấp thời gian. Chỉ cung cấp ngày hoặc ngày phân tích cú pháp và cung cấp nó dưới dạng đầu vào. Tôi đã đề cập đến các trường hợp kiểm tra khác nhau khi bắt đầu mã.

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
2

Đã trả lời ngày 23 tháng 8 lúc 18:37Aug 23 at 18:37

mihir6692mihir6692mihir6692

1671 Huy hiệu vàng3 Huy hiệu bạc18 Huy hiệu đồng1 gold badge3 silver badges18 bronze badges

1

Kiểm tra: Moment.jsmoment.js

Example:

# modifies _date_
function setToMonday( date ) {
    var day = date.getDay() || 7;  
    if( day !== 1 ) 
        date.setHours(-24 * (day - 1)); 
    return date;
}

setToMonday(new Date());
3

Phần thưởng: hoạt động với Node.js quá

Đã trả lời ngày 17 tháng 3 năm 2014 lúc 6:18Mar 17, 2014 at 6:18

PixelFreakPixelFreakpixelfreak

17.6K12 Huy hiệu vàng89 Huy hiệu bạc107 Huy hiệu đồng12 gold badges89 silver badges107 bronze badges

3

JavaScript vào ngày nào trong tuần?

Gọi phương thức GetDay () trên đối tượng ngày để có được ngày trong tuần. Phương pháp GetDay trả về ngày trong tuần cho ngày cụ thể, được đại diện dưới dạng số nguyên từ 0 đến 6, trong đó 0 là Chủ nhật và 6 là thứ bảy. Đã sao chép!. The getDay method returns the day of the week for the specific date, represented as an integer between 0 and 6 , where 0 is Sunday and 6 is Saturday. Copied!

Làm thế nào để bạn tìm thấy ngày đầu tiên của một tuần?

Để có được ngày đầu tiên trong tuần, chúng tôi trừ đi ngày trong tuần từ ngày của tháng.subtract the day of the week from the day of the month.

Làm thế nào để tôi tìm thấy ngày đầu tiên và ngày cuối cùng trong tuần?

Ngày của tháng cho ngày đầu tiên trong tuần bằng ngày của tháng - ngày trong tuần.Nếu bạn coi thứ Hai là ngày đầu tiên trong tuần, hãy thêm 1 vào kết quả.Ngày của tháng cho ngày cuối cùng trong tuần bằng với ngày đầu tiên của tuần + 6. . If you consider Monday to be the first day of the week, add 1 to the result. The day of the month for the last day of the week is equal to first day of the week + 6 .

Làm thế nào để bạn có được thứ Hai của tuần JavaScript?

getdate () - hôm nay.getday () + 1;const Thứ hai = Ngày mới (hôm nay ...
Tính toán ngày của tháng thứ Hai của tuần hiện tại ..
Sử dụng phương thức setDate () để có dấu thời gian của thứ Hai của tuần hiện tại ..
Chuyển kết quả cho hàm xây dựng ngày () ..