将月份转换为毫秒的最佳方法

use*_*389 3 java datetime

我试图将几个月的时间转换为毫秒

例如:6个月= X毫秒

Jon*_*eet 8

对此没有固定的答案,因为这取决于那些月份 - 实际上是哪一年.如果您想考虑到这一点,也可能是您所在的时区.(顺便说一句,我假设你的意思是阳历,不同的日历系统有不同的月份长度.)

你可以通过假设一年365.25天得到某种"合理的近似",并说6个月是其中的一半,然后发现那么多天以毫秒为单位.但它只是一个近似值.

对于"从日期/时间X到6个月后需要多少毫秒",您将使用API​​(即使Calendar适用于此特定情况,但我建议使用Joda Timejava.timeJava 8):

  • 在相应的日历和时区中设置开始日期/时间
  • 获取"自Unix时代以来的毫秒数"(这很容易在任何API中检索)并记住它
  • 加6个月
  • 再次获取"自Unix纪元以来的毫秒数",并从中减去前面的值


Erw*_*idt 5

如果您确切知道这些6个月何时到达,您可以使用各种方法来计算持续时间,使用java.util.CalendarJodaTime或JDK1.8时间API.

但是,如果您没有特定日期,则可以计算一个月的平均持续时间.世界上没有API可以改变这一事实.

例如,JDK1.8时间API使用它持续一个月的持续时间:(从java.time.temporal.ChronoUnit)

MONTHS("Months", Duration.ofSeconds(31556952L / 12)),
Run Code Online (Sandbox Code Playgroud)

31,556,952是一年中的秒数,基于持续365.2425数天的年份.

您可以直接使用相同的数字,并获得与时间API相同的结果:

long months = 6;
long seconds = months * 31556952L / 12;
long milliseconds = seconds * 1000;
Run Code Online (Sandbox Code Playgroud)

结果:

15,778,476,000
Run Code Online (Sandbox Code Playgroud)