164 lines
6.3 KiB
JavaScript
164 lines
6.3 KiB
JavaScript
import {CalendarDate as $35ea8db9cb2ccb90$export$99faa760c7908e4f} from "./CalendarDate.module.js";
|
|
|
|
/*
|
|
* Copyright 2020 Adobe. All rights reserved.
|
|
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
* governing permissions and limitations under the License.
|
|
*/ // Portions of the code in this file are based on code from ICU.
|
|
// Original licensing can be found in the NOTICE file in the root directory of this source tree.
|
|
|
|
const $b956b2d7a6cf451f$var$ETHIOPIC_EPOCH = 1723856;
|
|
const $b956b2d7a6cf451f$var$COPTIC_EPOCH = 1824665;
|
|
// The delta between Amete Alem 1 and Amete Mihret 1
|
|
// AA 5501 = AM 1
|
|
const $b956b2d7a6cf451f$var$AMETE_MIHRET_DELTA = 5500;
|
|
function $b956b2d7a6cf451f$var$ceToJulianDay(epoch, year, month, day) {
|
|
return epoch // difference from Julian epoch to 1,1,1
|
|
+ 365 * year // number of days from years
|
|
+ Math.floor(year / 4) // extra day of leap year
|
|
+ 30 * (month - 1 // number of days from months (1 based)
|
|
) + day - 1 // number of days for present month (1 based)
|
|
;
|
|
}
|
|
function $b956b2d7a6cf451f$var$julianDayToCE(epoch, jd) {
|
|
let year = Math.floor(4 * (jd - epoch) / 1461);
|
|
let month = 1 + Math.floor((jd - $b956b2d7a6cf451f$var$ceToJulianDay(epoch, year, 1, 1)) / 30);
|
|
let day = jd + 1 - $b956b2d7a6cf451f$var$ceToJulianDay(epoch, year, month, 1);
|
|
return [
|
|
year,
|
|
month,
|
|
day
|
|
];
|
|
}
|
|
function $b956b2d7a6cf451f$var$getLeapDay(year) {
|
|
return Math.floor(year % 4 / 3);
|
|
}
|
|
function $b956b2d7a6cf451f$var$getDaysInMonth(year, month) {
|
|
// The Ethiopian and Coptic calendars have 13 months, 12 of 30 days each and
|
|
// an intercalary month at the end of the year of 5 or 6 days, depending whether
|
|
// the year is a leap year or not. The Leap Year follows the same rules as the
|
|
// Julian Calendar so that the extra month always has six days in the year before
|
|
// a Julian Leap Year.
|
|
if (month % 13 !== 0) // not intercalary month
|
|
return 30;
|
|
else // intercalary month 5 days + possible leap day
|
|
return $b956b2d7a6cf451f$var$getLeapDay(year) + 5;
|
|
}
|
|
class $b956b2d7a6cf451f$export$26ba6eab5e20cd7d {
|
|
fromJulianDay(jd) {
|
|
let [year, month, day] = $b956b2d7a6cf451f$var$julianDayToCE($b956b2d7a6cf451f$var$ETHIOPIC_EPOCH, jd);
|
|
let era = 'AM';
|
|
if (year <= 0) {
|
|
era = 'AA';
|
|
year += $b956b2d7a6cf451f$var$AMETE_MIHRET_DELTA;
|
|
}
|
|
return new (0, $35ea8db9cb2ccb90$export$99faa760c7908e4f)(this, era, year, month, day);
|
|
}
|
|
toJulianDay(date) {
|
|
let year = date.year;
|
|
if (date.era === 'AA') year -= $b956b2d7a6cf451f$var$AMETE_MIHRET_DELTA;
|
|
return $b956b2d7a6cf451f$var$ceToJulianDay($b956b2d7a6cf451f$var$ETHIOPIC_EPOCH, year, date.month, date.day);
|
|
}
|
|
getDaysInMonth(date) {
|
|
return $b956b2d7a6cf451f$var$getDaysInMonth(date.year, date.month);
|
|
}
|
|
getMonthsInYear() {
|
|
return 13;
|
|
}
|
|
getDaysInYear(date) {
|
|
return 365 + $b956b2d7a6cf451f$var$getLeapDay(date.year);
|
|
}
|
|
getYearsInEra(date) {
|
|
// 9999-12-31 gregorian is 9992-20-02 ethiopic.
|
|
// Round down to 9991 for the last full year.
|
|
// AA 9999-01-01 ethiopic is 4506-09-30 gregorian.
|
|
return date.era === 'AA' ? 9999 : 9991;
|
|
}
|
|
getEras() {
|
|
return [
|
|
'AA',
|
|
'AM'
|
|
];
|
|
}
|
|
constructor(){
|
|
this.identifier = 'ethiopic';
|
|
}
|
|
}
|
|
class $b956b2d7a6cf451f$export$d72e0c37005a4914 extends $b956b2d7a6cf451f$export$26ba6eab5e20cd7d {
|
|
fromJulianDay(jd) {
|
|
let [year, month, day] = $b956b2d7a6cf451f$var$julianDayToCE($b956b2d7a6cf451f$var$ETHIOPIC_EPOCH, jd);
|
|
year += $b956b2d7a6cf451f$var$AMETE_MIHRET_DELTA;
|
|
return new (0, $35ea8db9cb2ccb90$export$99faa760c7908e4f)(this, 'AA', year, month, day);
|
|
}
|
|
getEras() {
|
|
return [
|
|
'AA'
|
|
];
|
|
}
|
|
getYearsInEra() {
|
|
// 9999-13-04 ethioaa is the maximum date, which is equivalent to 4506-09-29 gregorian.
|
|
return 9999;
|
|
}
|
|
constructor(...args){
|
|
super(...args);
|
|
this.identifier = 'ethioaa' // also known as 'ethiopic-amete-alem' in ICU
|
|
;
|
|
}
|
|
}
|
|
class $b956b2d7a6cf451f$export$fe6243cbe1a4b7c1 extends $b956b2d7a6cf451f$export$26ba6eab5e20cd7d {
|
|
fromJulianDay(jd) {
|
|
let [year, month, day] = $b956b2d7a6cf451f$var$julianDayToCE($b956b2d7a6cf451f$var$COPTIC_EPOCH, jd);
|
|
let era = 'CE';
|
|
if (year <= 0) {
|
|
era = 'BCE';
|
|
year = 1 - year;
|
|
}
|
|
return new (0, $35ea8db9cb2ccb90$export$99faa760c7908e4f)(this, era, year, month, day);
|
|
}
|
|
toJulianDay(date) {
|
|
let year = date.year;
|
|
if (date.era === 'BCE') year = 1 - year;
|
|
return $b956b2d7a6cf451f$var$ceToJulianDay($b956b2d7a6cf451f$var$COPTIC_EPOCH, year, date.month, date.day);
|
|
}
|
|
getDaysInMonth(date) {
|
|
let year = date.year;
|
|
if (date.era === 'BCE') year = 1 - year;
|
|
return $b956b2d7a6cf451f$var$getDaysInMonth(year, date.month);
|
|
}
|
|
isInverseEra(date) {
|
|
return date.era === 'BCE';
|
|
}
|
|
balanceDate(date) {
|
|
if (date.year <= 0) {
|
|
date.era = date.era === 'BCE' ? 'CE' : 'BCE';
|
|
date.year = 1 - date.year;
|
|
}
|
|
}
|
|
getEras() {
|
|
return [
|
|
'BCE',
|
|
'CE'
|
|
];
|
|
}
|
|
getYearsInEra(date) {
|
|
// 9999-12-30 gregorian is 9716-02-20 coptic.
|
|
// Round down to 9715 for the last full year.
|
|
// BCE 9999-01-01 coptic is BC 9716-06-15 gregorian.
|
|
return date.era === 'BCE' ? 9999 : 9715;
|
|
}
|
|
constructor(...args){
|
|
super(...args);
|
|
this.identifier = 'coptic';
|
|
}
|
|
}
|
|
|
|
|
|
export {$b956b2d7a6cf451f$export$26ba6eab5e20cd7d as EthiopicCalendar, $b956b2d7a6cf451f$export$d72e0c37005a4914 as EthiopicAmeteAlemCalendar, $b956b2d7a6cf451f$export$fe6243cbe1a4b7c1 as CopticCalendar};
|
|
//# sourceMappingURL=EthiopicCalendar.module.js.map
|