Joda time, Period to total millis

后端 未结 3 909
遇见更好的自我
遇见更好的自我 2021-02-18 15:00

I\'m trying to get the total amount of Milliseconds (not the millis field) from the Period object instance. I\'ve tried multiple conversions, as I couldn\'t fi

相关标签:
3条回答
  • 2021-02-18 15:44

    If you want to get the millis from a specific time it can be done by using the plus() or minus() methods of the DateTime class.

    e.g. getting the millis from now

     DateTime start = new DateTime();  //NOW
     DateTime end = start.plus(<your period>);
     long millis = end.getMillis() - start.getMillis();
    
    0 讨论(0)
  • 2021-02-18 15:57

    You can't get the millis directly from a Period, since fields like months and years are variable in terms of milliseconds.

    In order to make this work, you need to supply a "baseline" instant from which Period can calculate that actual millisecond duration.

    For example, the Period.toDurationFrom and Period.toDurationTo methods take such a baseline instant, and calculate a Duration object, which you can then obtain the millis.

    The Javadoc for toDurationFrom says:

    Gets the total millisecond duration of this period relative to a start instant. This method adds the period to the specified instant in order to calculate the duration.

    An instant must be supplied as the duration of a period varies. For example, a period of 1 month could vary between the equivalent of 28 and 31 days in milliseconds due to different length months. Similarly, a day can vary at Daylight Savings cutover, typically between 23 and 25 hours.

    So you need to pick an appropriate baseline instant for your application.

    0 讨论(0)
  • 2021-02-18 15:58

    Using Joda time 2.3, it is:

    toStandardDuration().getMillis()
    
    0 讨论(0)
提交回复
热议问题