mirror of
https://github.com/corda/corda.git
synced 2025-01-21 03:55:00 +00:00
Merge branch 'master' of dice:git/vm
This commit is contained in:
commit
cb7189c5a7
@ -65,6 +65,9 @@ public abstract class Calendar {
|
|||||||
private static final int MILLIS_PER_SECOND = 1000;
|
private static final int MILLIS_PER_SECOND = 1000;
|
||||||
|
|
||||||
private static final int EPOCH_YEAR = 1970;
|
private static final int EPOCH_YEAR = 1970;
|
||||||
|
private static final int EPOCH_LEAP_YEAR = 1968;
|
||||||
|
private static final int DAYS_TO_EPOCH = 731;
|
||||||
|
|
||||||
private static final int[][] DAYS_IN_MONTH = new int[][] {
|
private static final int[][] DAYS_IN_MONTH = new int[][] {
|
||||||
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
|
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
|
||||||
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
|
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
|
||||||
@ -85,22 +88,22 @@ public abstract class Calendar {
|
|||||||
return (year%4 == 0) && (year%100 != 0) || (year%400 == 0);
|
return (year%4 == 0) && (year%100 != 0) || (year%400 == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int daysInYear(int year) {
|
|
||||||
return isLeapYear(year) ? 366 : 365;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void parseIntoFields(long timeInMillis) {
|
private void parseIntoFields(long timeInMillis) {
|
||||||
long days = timeInMillis / MILLIS_PER_DAY;
|
long days = timeInMillis / MILLIS_PER_DAY;
|
||||||
int year = EPOCH_YEAR;
|
/* convert days since Jan 1, 1970 to days since Jan 1, 1968 */
|
||||||
while (days >= daysInYear(year)) {
|
days += DAYS_TO_EPOCH;
|
||||||
days -= daysInYear(year++);
|
long years = 4 * days / 1461; /* days/365.25 = 4*days/(4*365.25) */
|
||||||
}
|
int year = (int)(EPOCH_LEAP_YEAR + years);
|
||||||
|
days -= 365 * years + years / 4;
|
||||||
|
if (!isLeapYear(year)) days--;
|
||||||
|
|
||||||
int month=0;
|
int month=0;
|
||||||
int leapIndex = isLeapYear(year) ? 1 : 0;
|
int leapIndex = isLeapYear(year) ? 1 : 0;
|
||||||
while (days >= DAYS_IN_MONTH[leapIndex][month]) {
|
while (days >= DAYS_IN_MONTH[leapIndex][month]) {
|
||||||
days -= DAYS_IN_MONTH[leapIndex][month++];
|
days -= DAYS_IN_MONTH[leapIndex][month++];
|
||||||
}
|
}
|
||||||
days++;
|
days++;
|
||||||
|
|
||||||
int remainder = (int)(timeInMillis % MILLIS_PER_DAY);
|
int remainder = (int)(timeInMillis % MILLIS_PER_DAY);
|
||||||
int hour = remainder / MILLIS_PER_HOUR;
|
int hour = remainder / MILLIS_PER_HOUR;
|
||||||
remainder = remainder % MILLIS_PER_HOUR;
|
remainder = remainder % MILLIS_PER_HOUR;
|
||||||
|
Loading…
Reference in New Issue
Block a user