Bagaimana saya mendapatkan cap waktu UNIX (jumlah detik sejak 1970 GMT) dari objek Date di aplikasi Rails?
Saya tahu Time#to_i
mengembalikan cap waktu, tetapi melakukan Date#to_time
dan kemudian mendapatkan cap waktu menghasilkan sesuatu yang mati sekitar sebulan (tidak yakin mengapa ...).
Bantuan apa pun dihargai, terima kasih!
Sunting: Oke, saya pikir saya sudah mengetahuinya- Saya sedang memproses sebuah kencan beberapa kali dalam satu lingkaran, dan setiap kali tanggal itu dipindahkan sedikit karena ketidakcocokan zona waktu, akhirnya mengarah ke stempel waktu saya menjadi bulan libur. Tetap saja, saya akan tertarik mengetahui apakah ada cara untuk melakukan ini tanpa mengandalkan Date#to_time
.
sumber
to_utc
date.to_time.utc
mungkin itu yang dia maksud.Saya mendapatkan yang berikut ketika saya mencobanya:
Perbedaan antara kedua angka ini adalah karena fakta yang
Date
tidak menyimpan jam, menit atau detik dari waktu saat ini. Konversi aDate
keTime
wasiat menghasilkan pada hari itu, tengah malam.sumber
Opsi yang disarankan untuk menggunakan
to_utc
atauutc
memperbaiki offset waktu lokal tidak berfungsi. Bagi saya, saya menemukan menggunakanTime.utc()
berfungsi dengan benar dan kode melibatkan lebih sedikit langkah:vs.
Inilah yang terjadi ketika Anda memanggil utc setelah menggunakan
Date
....... begitu jelas menelepon
to_i
akan memberikan stempel waktu yang salah.sumber
Solusi untuk Ruby 1.8 ketika Anda memiliki objek DateTime yang sewenang-wenang:
sumber
sumber