SORU
19 EKİM 2011, ÇARŞAMBA


Nasıl Ruby DateTime için bir unix zaman damgası (epoch beri saniye) dönüştürmek için?

Nasıl Ruby için bir Unix zaman damgası (epoch beri saniye) DateTime dönüştürme?

CEVAP
19 EKİM 2011, ÇARŞAMBA


Üzgünüm, sinaps başarısızlık an kısa. İşte gerçek cevap.

Time.at(seconds_since_epoch_integer).to_datetime

Kısa örnek(bu mevcut sistemi zaman dilimi dikkate alan):

$ date  %s
1318996912

$ irb

ruby-1.9.2-p180 :001 > require 'date'
 => true 

ruby-1.9.2-p180 :002 > Time.at(1318996912).to_datetime
 => #<DateTime: 2011-10-18T23:01:52-05:00 (13261609807/5400,-5/24,2299161)> 

Diğer güncelleme(UTC)

ruby-1.9.2-p180 :003 > Time.at(1318996912).utc.to_datetime
 => #<DateTime: 2011-10-19T04:01:52 00:00 (13261609807/5400,0/1,2299161)>

Son Güncelleme: Ben, karşılaştırılan iyi çözümler bu iş parçacığı çalışırken bir HA service bir ya da iki hafta önce, gerçekten çok şaşırtıcı bulmak olduğunu Time.at(..) daha iyi performans DateTime.strptime(..) (güncelleme: eklendi daha fazla kriterler).

# ~ % ruby -v
#  => ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin13.0]

irb(main):038:0> Benchmark.measure do
irb(main):039:1*   ["1318996912", "1318496912"].each do |s|
irb(main):040:2*     DateTime.strptime(s, '%s')
irb(main):041:2>   end
irb(main):042:1> end

=> #<Benchmark ... @real=2.9e-05 ... @total=0.0>

irb(main):044:0> Benchmark.measure do
irb(main):045:1>   [1318996912, 1318496912].each do |i|
irb(main):046:2>     DateTime.strptime(i.to_s, '%s')
irb(main):047:2>   end
irb(main):048:1> end

=> #<Benchmark ... @real=2.0e-05 ... @total=0.0>

irb(main):050:0* Benchmark.measure do
irb(main):051:1*   ["1318996912", "1318496912"].each do |s|
irb(main):052:2*     Time.at(s.to_i).to_datetime
irb(main):053:2>   end
irb(main):054:1> end

=> #<Benchmark ... @real=1.5e-05 ... @total=0.0>

irb(main):056:0* Benchmark.measure do
irb(main):057:1*   [1318996912, 1318496912].each do |i|
irb(main):058:2*     Time.at(i).to_datetime
irb(main):059:2>   end
irb(main):060:1> end

=> #<Benchmark ... @real=2.0e-05 ... @total=0.0>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • Fuse

    Fuse

    21 Kasım 2005
  • humanHardDrive

    humanHardDri

    16 Mart 2011