Bagaimana saya mendapatkan jumlah minggu kerja tahun ini, seperti PHP date('W')
?
Itu harus merupakan angka minggu ISO-8601 tahun, minggu-minggu mulai hari Senin.
javascript
date
PeeHaa
sumber
sumber
Jawaban:
Anda harus bisa mendapatkan yang Anda inginkan di sini:
http://www.merlyn.demon.co.uk/js-date6.htm#YWD.Tautan yang lebih baik di situs yang sama adalah:
Bekerja dengan minggu.Edit
Berikut adalah beberapa kode berdasarkan tautan yang disediakan dan yang diposting sebelumnya oleh Dommer. Ini telah diuji ringan terhadap hasil di
http://www.merlyn.demon.co.uk/js-date6.htm#YWD. Silakan uji dengan seksama, tidak ada jaminan yang diberikan.Edit 2017
Ada masalah dengan tanggal selama periode bahwa daylight saving diamati dan tahun-tahun di mana 1 Jan adalah hari Jumat. Diperbaiki dengan menggunakan semua metode UTC. Berikut ini mengembalikan hasil yang identik ke Moment.js.
Jam diunggulkan saat membuat tanggal "UTC".
Diminimalkan, versi prototipe (hanya mengembalikan angka minggu):
Bagian tes
Di bagian ini, Anda dapat memasukkan tanggal apa pun dalam format YYYY-MM-DD dan memeriksa apakah kode ini memberikan angka minggu yang sama dengan angka minggu ISO Moment.js (diuji selama 50 tahun dari 2000 hingga 2050).
sumber
d.setMilliseconds(0)
- itu terus menunjukkan angka minggu yang berbeda untuk tanggal yang sama tergantung pada apakah saya menggunakan Tanggal baru () atau Tanggal baru ("1/4/2016"). Hanya kepala untuk orang lain yang mungkin mengalami hal yang sama.Anda dapat menggunakan perpustakaan momentjs juga:
moment().format('W')
sumber
moment().week()
Seperti dikatakan di atas tetapi tanpa kelas:
sumber
(now.getTime() - onejan.getTime())
untuk menghindari masalah pembangunan.Accordily http://javascript.about.com/library/blweekyear.htm
sumber
Date.format()
Pustaka Jacob Wright mengimplementasikan pemformatan tanggal dengan gayadate()
fungsi PHP dan mendukung angka minggu ISO-8601:Mungkin sedikit berlebihan untuk hanya satu minggu, tetapi mendukung format PHP dan sangat berguna jika Anda akan melakukan banyak hal.
sumber
Kode berikut adalah independen zona waktu (tanggal UTC digunakan) dan berfungsi sesuai dengan https://en.wikipedia.org/wiki/ISO_8601
sumber
Saya menemukan kelas SimpleDateFormat Java SE yang dijelaskan pada spesifikasi Oracle: http://goo.gl/7MbCh5 . Dalam kasus saya di Google Apps Script berfungsi seperti ini:
Misalnya dalam makro spreadsheet Anda dapat mengambil zona waktu file yang sebenarnya:
sumber
Ini menambahkan metode "getWeek" ke Date.prototype yang mengembalikan jumlah minggu dari awal tahun. Argumen mendefinisikan hari mana dalam minggu untuk mempertimbangkan yang pertama. Jika tidak ada argumen yang lolos, hari pertama diasumsikan hari Minggu.
sumber
new Date(Date.UTC(2018,11, 31)).getWeek(1)+1
(Senin adalah hari pertama di Jerman).Dapatkan jumlah minggu dari Tanggal yang diberikan
Contoh
sumber
I need the week to begin on a Sunday
; Saya pikir satu-satunya perubahan yang diperlukan adalah fungsi weekday ().getDay()+1
akan diubah menjadi.getDay()
Kode di bawah ini menghitung angka minggu ISO 8601 yang benar. Ini cocok dengan PHP
date("W")
untuk setiap minggu antara 1/1/1970 dan 1/1/2100.Sumber: Taco van den Broek
Jika Anda tidak memperluas prototipe, maka inilah fungsinya:
Penggunaan sampel:
sumber
+6 ) % 7
bagiannya. Terima kasih dari scrub!getDay()
dimulai pada hari Minggu, jadi jika Anda ingin memulai pada hari Minggu maka Anda dapat menghapus koreksi:var nDay = date.getDay();
Jika Anda sudah berada dalam proyek Angular, Anda dapat menggunakan
$filter('date')
.Sebagai contoh:
sumber
Cuplikan kode yang berfungsi cukup baik bagi saya adalah yang ini:
Catatan:
d
adalah Tanggal saya yang saya inginkan nomor minggu saat ini.The
+
bertobat dengan Tanggal ke nomor (bekerja dengan naskah).sumber
Inilah implementasi saya untuk menghitung angka minggu dalam JavaScript. dikoreksi untuk offset waktu musim panas dan musim dingin juga. Saya menggunakan definisi minggu ini dari artikel ini: ISO 8601
Minggu-minggu dari Senin hingga Minggu, dan 4 Januari selalu di minggu pertama tahun ini.
untuk pengujian saya menggunakan tes JavaScript berikut di Qunit
sumber
Angka minggu ini benar-benar menyakitkan di a **. Sebagian besar skrip di internet tidak bekerja untuk saya. Mereka bekerja sebagian besar waktu tetapi semuanya pecah di beberapa titik, terutama ketika tahun berubah dan minggu terakhir tahun itu tiba-tiba minggu pertama tahun dll. Bahkan filter tanggal Angular menunjukkan data yang salah (itu adalah minggu ke-1 tahun depan, angular memberi minggu 53).
Catatan: Contoh dirancang untuk bekerja dengan minggu Eropa (Senin dulu)!
getWeek ()
setDay ()
getDayIndex ()
Saya telah menguji ini dan tampaknya berfungsi dengan sangat baik tetapi jika Anda melihat ada cacat di dalamnya, beri tahu saya.
sumber
Saya mencoba banyak untuk mendapatkan kode terpendek untuk mendapatkan ISO-conform weeknumber.
Variabel
date
diperlukan untuk menghindari mengubah yang aslithis
. Saya menggunakan nilai kembalisetDate()
dansetMonth()
untuk membuanggetTime()
untuk menghemat panjang kode dan saya menggunakan nomor ekspektasi selama milidetik sehari, bukan perkalian elemen tunggal atau angka dengan lima nol.this
adalah Tanggal atau Jumlah milidetik, nilai kembali adalahString
mis. "49/2017".sumber
Dengan Luxon ( https://github.com/moment/luxon ):
sumber
Opsi berbasis pustaka lain: gunakan
d3-time-format
:sumber
Penanganan terpendek untuk Angular2 + DatePipe, disesuaikan untuk ISO-8601:
sumber
sumber