Python的Java等价物';s toordinal()?
在java中复制Python的Java等价物';s toordinal()?,java,python,datetime,epoch,ordinal,Java,Python,Datetime,Epoch,Ordinal,在java中复制datetime.datetime.now().toordinal()的最佳方法是什么? 我尝试过使用epoch,但结果并不理想。没有任何直接的方法可以使用Java Time API查询这些信息,但您可以计算出来 public static void main(String[] args) { long ordinal = LocalDate.now().toEpochDay() + (146097 * 5L) - (31L * 365L + 7L); Syst
datetime.datetime.now().toordinal()
的最佳方法是什么?
我尝试过使用epoch,但结果并不理想。没有任何直接的方法可以使用Java Time API查询这些信息,但您可以计算出来
public static void main(String[] args) {
long ordinal = LocalDate.now().toEpochDay() + (146097 * 5L) - (31L * 365L + 7L);
System.out.println(ordinal);
}
今天运行,2016年4月19日,它输出736073
,这与Python的输出一致
从一开始,你就可以得到大纪元日。如果你看一看,你会发现它实际上计算了自第0年以来的总天数,然后用常数减去
static final long DAYS_0000_TO_1970 = (DAYS_PER_CYCLE * 5L) - (30L * 365L + 7L);
其中,DAYS\u PER\u CYCLE=146097
是400年周期中的天数。这个常量不是公共的,所以我们不能直接重用它
根据的Python文档,它将第1年定义为序号为1。Java API上面的演算假设现在是第0年,所以我们只需要对此进行调整。您能发布您尝试过的内容和结果吗?以下是;如果确实需要这种行为,您可能只想将其移植到Java。