如何获取早于1901年的时间戳 我试图找到准确的计算从1850年1月1日到现在的秒数,用两种语言(JavaScript、C++和Python),甚至不要问,我很久以前就不再问这些问题了。

如何获取早于1901年的时间戳 我试图找到准确的计算从1850年1月1日到现在的秒数,用两种语言(JavaScript、C++和Python),甚至不要问,我很久以前就不再问这些问题了。,javascript,c++,python,timestamp,Javascript,C++,Python,Timestamp,问题是平台将时间戳存储为32位有符号整数,所以我无法获取1901年以前日期的时间戳,以便轻松地从中减去当前时间戳等。。那么我该如何做我想做的事情呢?在python中,有一个问题。具体来说,date类会有所帮助 from datetime import date print date(1850, 1, 1).weekday() # 1, which is Tuesday # (Mon is 0) 编辑 或者,针对您的具体问题,与timedelta合作将有所帮助 from datetime i

问题是平台将时间戳存储为32位有符号整数,所以我无法获取1901年以前日期的时间戳,以便轻松地从中减去当前时间戳等。。那么我该如何做我想做的事情呢?

在python中,有一个问题。具体来说,date类会有所帮助

from datetime import date
print date(1850, 1, 1).weekday()  # 1, which is Tuesday 
# (Mon is 0)
编辑

或者,针对您的具体问题,与timedelta合作将有所帮助

from datetime import datetime
td = datetime.now() - datetime(1850, 1, 1)
print (86400*td.days)+td.seconds  # seconds since then till now

可移植的语言不可知方法:

第一步。计算01/01/1850 00:00和01/01/1901 00:00之间的秒数。将此号码保存在某处(称为M)

第二步。使用可用的语言功能计算01/01/1901 00:00和您想要的任何其他日期和时间之间的秒数


第三步。返回步骤2+M的结果。如有必要,请记住将结果强制转换为长整数。

在WIN32下,您可以使用SystemTimeToFileTime

FILETIME是一个64位无符号整数,用于计算自1601年1月1日(UTC)以来的100纳秒间隔数


您可以将两个时间戳转换为FILETIME。您可以将其转换为ULARGE_INTEGER(t.dwLowDateTime+t.dwHighDateTime为什么不使用Date对象而不是整数,至少可以获得一个起点

function secondsSince(D){
 D= new Date(Date.parse(D));
 D.setUTCHours(0,0,0,0); 
 return Math.floor((new Date()-D)/1000);
}
//带日期的测试

var daystring='1850年1月1日', ss=二次频率(日字符串), 差值=ss/(60*60*24*365.25)

警报('它已被'+ss+ '自'+daystring+
“\n\n大约是“+diff.toFixed(2)+”years.”;

egenix日期时间也值得一看

你需要什么样的精度?例如,你知道吗,有时一天的秒数不是
24*60*60
?正如J.F.所指出的,这是一个困难的问题。你是否在寻找近似答案,忽略闰日/年/周期等特殊情况?1901年的日期似乎有误导性,因为32位无符号仅给出一个跨度(以秒为单位)大约68年,因此您需要几个开始日期(同时需要存储至少两位的“startDateId”)从1850年到现在,阿拉斯加在1867年错过了11天,问题是围绕32位平台限制工作。所有这些关于阿拉斯加在公历闰年中有多少秒的评论都是多余的。taht不起作用。1850年1月1日到1901年1月1日之间的秒数将取决于p的确切本地值所用时间的点。有关日历自适应的信息,请参阅。