Idenya adalah ini: Tulis fungsi untuk mencetak lamanya waktu dari tanggal sekarang / hari ini (pada saat fungsi dipanggil) sampai tanggal yang disediakan sebagai argumen.
Asumsi:
- Tanggal input akan selalu besok atau lambat, di masa depan.
- Tanggal input tidak akan pernah lebih dari 10 tahun di masa depan.
Aturan:
- Output harus dalam format ini: "[z tahun (s)], [x bulan (s)], y hari hingga -Input Tanggal-"
- Kerangka waktu keluaran (hari / bulan / tahun) harus jamak dengan benar. yaitu
1 month
tidak1 months
- Masukan dapat dalam format tanggal mana saja yang Anda inginkan (15/3/12 - 15 Maret 2012 - 2012.03.15).
Contoh: Program asumsi dijalankan pada 15 Maret 2012:
- Masukkan tanggal
3/20/12
=5 days until 3/20/12
- BUKAN tanggal input
4/16/12
=1 month, 1 days until 3/20/12
- Masukkan tanggal
2012.04.20
=1 month, 5 days until 2012.04.20
- BUKAN tanggal input
2012.04.20
=36 days until 2012.04.20
- Masukkan tanggal
10/31/17
=5 years, 7 months, 16 days until 10/31/17
- Masukkan tanggal
3/15/13
=1 year until 3/15/13
Ini kode golf, jadi kode panjang terpendek menang.
Saya kira demi memiliki tenggat waktu, saya akan memilih jawaban pada:
23 Maret 2012!
(Ini adalah pertanyaan CG pertama saya, jadi saya akan dengan senang hati memperbaiki kesalahan pertanyaan di pihak saya!)
now until <input time>
:: pnow-<input time>
Jawaban:
R, 99 karakter
Saya tahu ini agak curang, tapi R adalah soal paketnya dan lubridate sangat nyaman untuk tugas semacam ini!
Pemakaian:
sumber
PHP, 315 karakter
Pemakaian:
Membawa tanggal dalam
dd/mm/yyyy
format. Saya telah menggunakan perhitungan panjang bulan Griffin ( lagi ), meskipun saya harus menempelkan tanda kurung tambahan di dalamnya untuk membuat presedensi berfungsi dengan baik. Saya juga meninggalkan beberapa jeda baris untuk membuatnya sedikit lebih mudah dibaca.sumber
Ruby (213)
menerima tanggal dalam format apa pun yang
Date.parse
diterima. Sudah mencoba sajayyyy-mm-dd
untuk mendapatkan minggu, tambahkan:
dan
[0,'week'],
(antara bulan dan hari). hari akan selalu begitu< 7
sumber
uninitialized constant Object::Date (NameError)
... Saya pikir Anda menggunakanDate
kelas RailsVBA:
766631 CharsTerima kasih kepada mellamokb untuk membantu mempersingkat pembuatan string dan
IIf
.Saya tahu
VBA
pasti tidak meminjamkan kode golf dan juga beberapa bahasa lain, tapi itulah yang saya kuasai (bukan ahli). :-)Ini merupakan latihan yang menyenangkan bagi saya!
sumber
If y > 0 Then a = y & " year,":If y > 1 Then a = y & " years,"
dapat digabungkan menjadia = y & " year" & Left("s", y - 1) & ","
1 year
,1 month
,1 day
. Saya telah mengoreksi ini dalam jawabannya. Ini sebenarnya dibuat untuk kode yang lebih pendek!If v < w Then d = w - v:If v = w Then d = 0
keIf v <= w Then d = w - v
untuk penghematan 20 karakter tambahan. Saya akan memperbarui jawabannya jika saya memiliki perubahan yang lebih signifikan untuk dikirim.JavaScript (ES6), 125 byte
Karena jawaban oleh Paolo menggunakan perpustakaan eksternal, saya akan melakukan hal yang sama. Node.js adalah semua tentang paket NPM dan saat ini + HumanizeDuration sangat nyaman untuk tugas ini!
Lingkungan simpul
Lingkungan browser
Karena perpustakaan mendeklarasikan variabel global, itu sebenarnya sedikit lebih pendek (102 byte). Tidak jelas apakah saya harus menyertakan tag skrip yang diperlukan untuk memuat dalam JavaScript pihak ketiga, jadi saya akan menghitung Node yang resmi.
CoffeeScript, juga 125 byte
sumber
PHP, 151 karakter
sumber
echo date_diff(new DateTime(),new DateTime($argv[1]))->format('%yyears, %mmonths, %a days');
Panjangnya 92 karakter, saat dipanggil pada baris perintah.