C# 如何将整数转换为无符号64位整数
我正在将此代码从C#转换为Ruby: C#代码C# 如何将整数转换为无符号64位整数,c#,ruby,C#,Ruby,我正在将此代码从C#转换为Ruby: C#代码 DateTime dtEpoch = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc); string strTimeStamp = Convert.ToUInt64((DateTime.UtcNow - dtEpoch).TotalSeconds).ToString(); now = Time.now.utc epoch = Time.utc(1970,01,01, 0,0,0)
DateTime dtEpoch = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
string strTimeStamp = Convert.ToUInt64((DateTime.UtcNow - dtEpoch).TotalSeconds).ToString();
now = Time.now.utc
epoch = Time.utc(1970,01,01, 0,0,0)
time_diff = ((now - epoch).to_s).unpack('Q').first.to_s
Ruby代码
DateTime dtEpoch = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
string strTimeStamp = Convert.ToUInt64((DateTime.UtcNow - dtEpoch).TotalSeconds).ToString();
now = Time.now.utc
epoch = Time.utc(1970,01,01, 0,0,0)
time_diff = ((now - epoch).to_s).unpack('Q').first.to_s
我需要将整数转换为无符号64位整数。解包真的是一种方式吗?我不确定代码的返回值是多少,但它肯定不是从epoch开始的几秒钟 Ruby在内部以秒的形式存储日期和时间,直到epoch
Time.now.to_i
将准确返回您要查找的内容
require 'date'
# Seconds from epoch to this very second
puts Time.now.to_i
# Seconds from epoch until today, 00:00
puts Date.today.to_time.to_i
简而言之,
Time.now.to_i
就足够了
自1970-01-01T00:00:00.000+0000以来,Ruby在内部以秒为单位存储时间:
Time.now.to_f #=> 1439806700.8638804
Time.now.to_i #=> 1439806700
在C#中,您不必将值转换为类似于ulong
,因为Ruby会自动强制整数类型,这样它就不会违背您的常识
有点冗长的解释:ruby将整数存储为
Fixnum
的实例,如果该数字符合63位大小(不是64位,奇怪吧?),如果该数字超过该大小,ruby会自动将其转换为具有任意大小的Bignum
。unpack
不是你的事Time.now.to_i
就足够了。@Aetherus Time\u diff=((now-epoch).to_i).要这样做吗?你不需要epoch
,因为ruby总是将时间存储为epoch之后的秒数。@Aetherus转换为64位怎么样?有点冗长的解释:ruby将整数存储为Fixnum
的实例,如果该数字符合63位大小(不是64位,是吗?),如果该数字超过该大小,ruby会自动将其转换为具有任意大小的Bignum
。