Bagaimana cara mendapatkan stempel waktu UTC di Ruby?
time = Time.now.getutc
Rasional: Di mata saya, stempel waktu persis seperti itu: Sebuah titik waktu. Ini dapat secara akurat direpresentasikan dengan suatu objek. Jika Anda membutuhkan yang lain, nilai skalar, misalnya detik sejak zaman Unix, interval 100-ns sejak 1601 atau mungkin string untuk tujuan tampilan atau menyimpan stempel waktu dalam database, Anda dapat dengan mudah mendapatkannya dari objek. Tapi itu sangat tergantung pada tujuan penggunaan Anda.
Mengatakan bahwa »stempel waktu yang sebenarnya adalah jumlah detik sejak epoch Unix« sedikit kehilangan intinya, karena itu adalah salah satu cara untuk mewakili suatu titik waktu, tetapi juga membutuhkan informasi tambahan untuk mengetahui bahwa Anda berurusan dengan waktu dan bukan angka. Sebuah Time
objek memecahkan masalah ini dengan baik dengan merepresentasikan suatu titik waktu dan juga secara eksplisit tentang apa itu .
Anda bisa menggunakan:
Time.now.to_i
.sumber
Format default tidak terlalu berguna, menurut saya. Saya lebih suka ISO8601 karena dapat diurutkan, relatif ringkas, dan dikenal luas:
>> require 'time' => true >> Time.now.utc.iso8601 => "2011-07-28T23:14:04Z"
sumber
/usr/share/ruby/2.0/time.rb
.Biasanya stempel waktu tidak memiliki zona waktu.
sumber
to_f
akan lebih baikjika Anda memerlukan stempel waktu yang dapat dibaca manusia (seperti yang dimiliki migrasi rel) ex. " 20190527141340 "
Time.now.utc.to_formatted_s(:number) # using Rails Time.now.utc.strftime("%Y%m%d%H%M%S") # using Ruby
sumber
Apa gunanya stempel waktu dengan perinciannya yang diberikan dalam hitungan detik? Saya merasa jauh lebih praktis bekerja dengan
Time.now.to_f
. Heck, Anda bahkan mungkin melemparkanto_s.sub('.','')
untuk menyingkirkan titik desimal, atau melakukan typecast seperti ini:Integer(1e6*Time.now.to_f)
.sumber
Integer(1e3*Time.now.to_f)
sehingga stempel waktu ruby sisi server saya sama dengan javascript sisi klienDate.now()
Time.utc(2010, 05, 17)
sumber
time = Time.zone.now()
Ini akan bekerja sebagai
irb> Time.zone.now => 2017-12-02 12:06:41 UTC
sumber
Cara yang tepat adalah melakukan a
Time.now.getutc.to_i
untuk mendapatkan jumlah stempel waktu yang tepat karena hanya menampilkan bilangan bulat tidak harus selalu sama dengan stempel waktu utc karena perbedaan zona waktu.sumber