1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | require 'net/telnet'
TIME_SERVER = 'ntp2.fau.de'
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}" |