Java 谷歌如何计算时间

Java 谷歌如何计算时间,java,calculator,Java,Calculator,我正在开发一个java程序,它计算给定的秒数到年、天、小时数,一直到普朗克。我可以在谷歌搜索栏中输入“31年259天5小时54分钟”,结果显示“31.7097916年”。它是如何计算的?如果可能的话,我想在我的程序中实现这一点。只要算一下,31年259天5小时54分钟 float total = 31f; // Days to years total = 259 / 365; // Hours to years total = total + ((5 / 24) / 365); // Mi

我正在开发一个java程序,它计算给定的秒数到年、天、小时数,一直到普朗克。我可以在谷歌搜索栏中输入“31年259天5小时54分钟”,结果显示“31.7097916年”。它是如何计算的?如果可能的话,我想在我的程序中实现这一点。

只要算一下,31年259天5小时54分钟

float total = 31f;

// Days to years
total = 259 / 365;

// Hours to years
total = total + ((5 / 24) / 365);

// Minutes to years
total = total + (((54 / 60) / 24) / 365);

System.out.println("Total = " + total);
正如你所看到的,这是有逻辑的。用于更复杂(但仍然非常简单)的实现

public float daysToYear(int days){
    return days / 365;
}

public float hoursToYear(int hours){
    return (hours / 24) / 365;
}

public float minsToYear(int mins){
    return ((min / 60) / 24) / 365;
}

public float secsToYear(int secs){
    return (((secs / 60) / 60) / 24) / 365;
}

public float millisToYear(int millis){
    return ((((millis / 1000) / 60) / 60) / 24) / 365;
}
如您所见,这些转换本身可以简化和修改,以适合您需要的任何内容;例如,您可以将
millisToYear()
简化为

public float millisToYear(double millis){
    return secsToYear(millis/1000);
}

请注意,参数类型从int改为double。当然,正如下面的注释所述,如果您希望实现更复杂的功能(时区、闰年等),则需要考虑这些功能。同样,简单的逻辑。如果你需要帮助,我会改进我的答案,如果你对它非常友好:P

如果你尝试过一种方法,但效果不好?谷歌不太可能来分享他们的代码,其他任何事情都是猜测或者只是告诉你我们会怎么做。上面的@Robert linked非常棒!(顺便说一句,这真的是答案吗?)我认为谷歌给出这样的答案真的是误导。一年中“259天,5小时,54分钟”的确切比例取决于它是哪一年,以及夏令时是在259天内开始还是结束。实际上,没有办法正确计算这个。即使是强大的乔达。你似乎错过了31年的部分,而且一年中没有356天……这可能是漫长的一天,但至少是超短的一年!别忘了解释闰年和。这也是我提到乔达时间的原因。比我们聪明得多的人已经明白了这一点。没错!总是喜欢一个经过良好测试的库,而不是自己编写代码。可悲的是,没有“超级简单的例子”来计算你自己的时间。我责备地球的轨道!