1028 sb.append(':');
1029 zeroPad(sb, minFromTime(t), 2);
1030 sb.append(':');
1031 zeroPad(sb, secFromTime(t), 2);
1032 sb.append('.');
1033 zeroPad(sb, msFromTime(t), 3);
1034 sb.append("Z");
1035 return sb.toString();
1036 }
1037
1038 throw rangeError("invalid.date");
1039 }
1040
1041 // ECMA 15.9.1.2 Day (t)
1042 private static double day(final double t) {
1043 return Math.floor(t / msPerDay);
1044 }
1045
1046 // ECMA 15.9.1.2 TimeWithinDay (t)
1047 private static double timeWithinDay(final double t) {
1048 return t % msPerDay;
1049 }
1050
1051 // ECMA 15.9.1.3 InLeapYear (t)
1052 private static boolean isLeapYear(final int y) {
1053 return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0);
1054 }
1055
1056 // ECMA 15.9.1.3 DaysInYear (y)
1057 private static int daysInYear(final int y) {
1058 return isLeapYear(y) ? 366 : 365;
1059 }
1060
1061 // ECMA 15.9.1.3 DayFromYear (y)
1062 private static double dayFromYear(final double y) {
1063 return 365 * (y - 1970)
1064 + Math.floor((y -1969) / 4.0)
1065 - Math.floor((y - 1901) / 100.0)
1066 + Math.floor((y - 1601) / 400.0);
1067 }
1068
|
1028 sb.append(':');
1029 zeroPad(sb, minFromTime(t), 2);
1030 sb.append(':');
1031 zeroPad(sb, secFromTime(t), 2);
1032 sb.append('.');
1033 zeroPad(sb, msFromTime(t), 3);
1034 sb.append("Z");
1035 return sb.toString();
1036 }
1037
1038 throw rangeError("invalid.date");
1039 }
1040
1041 // ECMA 15.9.1.2 Day (t)
1042 private static double day(final double t) {
1043 return Math.floor(t / msPerDay);
1044 }
1045
1046 // ECMA 15.9.1.2 TimeWithinDay (t)
1047 private static double timeWithinDay(final double t) {
1048 final double val = t % msPerDay;
1049 return val < 0? val + msPerDay : val;
1050 }
1051
1052 // ECMA 15.9.1.3 InLeapYear (t)
1053 private static boolean isLeapYear(final int y) {
1054 return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0);
1055 }
1056
1057 // ECMA 15.9.1.3 DaysInYear (y)
1058 private static int daysInYear(final int y) {
1059 return isLeapYear(y) ? 366 : 365;
1060 }
1061
1062 // ECMA 15.9.1.3 DayFromYear (y)
1063 private static double dayFromYear(final double y) {
1064 return 365 * (y - 1970)
1065 + Math.floor((y -1969) / 4.0)
1066 - Math.floor((y - 1901) / 100.0)
1067 + Math.floor((y - 1601) / 400.0);
1068 }
1069
|