Saya membutuhkan cara tercepat untuk mendapatkan hari pertama dalam seminggu. Misalnya: hari ini tanggal 11 November, dan hari Kamis; dan saya ingin hari pertama minggu ini, yaitu 8 November, dan Senin. Saya memerlukan metode tercepat untuk fungsi peta MongoDB, ada ide?
162
Jawaban:
Dengan menggunakan
getDay
metode objek Date, Anda dapat mengetahui jumlah hari dalam seminggu (menjadi 0 = Minggu, 1 = Senin, dll).Anda kemudian dapat mengurangi jumlah hari ditambah satu, misalnya:
sumber
diff = d.getDate() - day;
d.setHours(0); d.setMinutes(0); d.setSeconds(0);
Tidak yakin bagaimana ini membandingkan untuk kinerja, tetapi ini berfungsi.
Atau sebagai fungsi:
sumber
date = new Date(date);
sebagai baris pertama dalam fungsi getMonday.Lihat Date.js
sumber
Date.parse('last monday');
Jawaban CMS benar tetapi menganggap bahwa Senin adalah hari pertama dalam seminggu.
Jawaban Chandler Zwolle benar tetapi mengutak-atik prototipe Date.
Jawaban lain yang diputar dengan jam / menit / detik / milidetik salah.
Fungsi di bawah ini benar dan mengambil tanggal sebagai parameter pertama dan hari pertama yang diinginkan dalam minggu sebagai parameter kedua (0 untuk hari Minggu, 1 untuk hari Senin, dll.). Catatan: jam, menit dan detik diatur ke 0 untuk memulai hari.
sumber
Ini akan bekerja dengan baik.
sumber
Saya menggunakan ini
sumber
Fungsi ini menggunakan waktu milidetik saat ini untuk mengurangi minggu ini, dan kemudian mengurangi satu minggu lagi jika tanggal saat ini adalah pada hari Senin (jumlah javascript dari minggu).
Saya telah mengujinya ketika rentang minggu dari satu bulan ke bulan lainnya (dan juga bertahun-tahun), dan tampaknya berfungsi dengan baik.
sumber
Selamat malam,
Saya lebih suka hanya memiliki metode ekstensi sederhana:
Anda akan melihat ini sebenarnya menggunakan metode ekstensi lain yang saya gunakan:
Sekarang, jika minggu Anda dimulai pada hari Minggu, berikan "0" untuk parameter pStartOfWeek, seperti:
var mThisSunday = new Date().startOfWeek(0);
Demikian pula, jika minggu Anda dimulai pada hari Senin, berikan "1" untuk parameter pStartOfWeek:
var mThisMonday = new Date().startOfWeek(1);
Salam,
sumber
Hari Pertama Minggu Ini
Untuk mendapatkan tanggal hari pertama dalam seminggu mulai hari ini, Anda dapat menggunakan sesuatu seperti:
Atau untuk mendapatkan hari terakhir dalam seminggu dari hari ini:
* Bergantung pada zona waktu Anda, awal minggu tidak harus dimulai pada hari Minggu, itu bisa dimulai pada hari Jumat, Sabtu, Senin atau hari lain di mana mesin Anda diatur. Metode-metode itu akan menjelaskan hal itu.
* Anda juga dapat memformatnya menggunakan
toISOString
metode seperti ini:getLastSunday().toISOString()
sumber
setDate () memiliki masalah dengan batas bulan yang dicatat dalam komentar di atas. Solusi yang bersih adalah menemukan perbedaan tanggal menggunakan cap waktu zaman daripada metode (secara mengejutkan berlawanan dengan intuisi) pada objek Date. Yaitu
sumber
Ini solusinya:
Sekarang Anda dapat memilih tanggal dengan indeks array yang dikembalikan.
sumber
Contoh perhitungan hanya secara matematis, tanpa
Date
fungsi apa pun .sumber
versi yang lebih umum dari ini ... ini akan memberi Anda hari apa pun dalam minggu ini berdasarkan hari apa yang Anda tentukan.
sumber
Lihat: moment.js
Contoh:
Bonus: bekerja dengan node.js juga
sumber
moment().startOf('week')
moment().startOf("week")
mungkin memberikan tanggal hari Minggu sebelumnya, tergantung pada pengaturan lokal. Dalam hal ini, gunakanmoment().startOf('isoWeek')
sebaliknya: runkit.com/embed/wdpi4bjwh6rtstartOf()
: momentjs.com/docs/#/manipulating/start-of