Skip to content

Instantly share code, notes, and snippets.

@seungjin
Created December 26, 2011 02:24
Show Gist options
  • Save seungjin/1520412 to your computer and use it in GitHub Desktop.
Save seungjin/1520412 to your computer and use it in GitHub Desktop.
get time over the web
require 'net/telnet'
TIME_SERVER = 'time.bora.net'
options = {
"Host" => TIME_SERVER,
"Telnetmode" => false,
"Timeout" => 30,
"Port" => "time"
}
# The time is the number of seconds since 00:00 (midnight) 1 January 1900
# GMT, such that the time 1 is 12:00:01 am on 1 January 1900 GMT; this
# base will serve until the year 2036.
seconds = Net::Telnet.new(options).recv(4).unpack('N').first
# The Ruby Time class handles dates with an epoch
# starting at midnight january 1 1970
# We have to use the Date class to work with pre-epoch dates.
require 'date'
def get_seconds_diff_1970_1900
# you might want to cache the Cache result... it won't change ;-)
(DateTime.new(1970, 1, 1) - DateTime.new(1900, 1, 1)).to_i * 24 * 60 * 60
end
# Convert seconds to a Time object
remote_time = Time.at(seconds - \
get_seconds_diff_1970_1900).strftime("%Y-%m-%d %H:%M:%S")
print "Time from #{TIME_SERVER} -> #{remote_time}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment