16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 2003 - 2013, International Business Machines Corporation and 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************* 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_FORMATTING 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "umutex.h" 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "ethpccal.h" 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "cecal.h" 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include <float.h> 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUOBJECT_DEFINE_RTTI_IMPLEMENTATION(EthiopicCalendar) 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//static const int32_t JD_EPOCH_OFFSET_AMETE_ALEM = -285019; 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic const int32_t JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic const int32_t AMETE_MIHRET_DELTA = 5500; // 5501 - 1 (Amete Alem 5501 = Amete Mihret 1) 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//------------------------------------------------------------------------- 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Constructors... 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//------------------------------------------------------------------------- 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::EthiopicCalendar(const Locale& aLocale, 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode& success, 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org EEraType type /*= AMETE_MIHRET_ERA*/) 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org: CECalendar(aLocale, success), 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org eraType(type) 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::EthiopicCalendar(const EthiopicCalendar& other) 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org: CECalendar(other), 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org eraType(other.eraType) 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::~EthiopicCalendar() 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgCalendar* 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::clone() const 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return new EthiopicCalendar(*this); 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgconst char * 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::getType() const 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (isAmeteAlemEra()) { 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return "ethiopic-amete-alem"; 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return "ethiopic"; 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::setAmeteAlemEra(UBool onOff) 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org eraType = onOff ? AMETE_ALEM_ERA : AMETE_MIHRET_ERA; 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUBool 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::isAmeteAlemEra() const 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return (eraType == AMETE_ALEM_ERA); 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//------------------------------------------------------------------------- 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Calendar framework 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//------------------------------------------------------------------------- 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::handleGetExtendedYear() 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Ethiopic calendar uses EXTENDED_YEAR aligned to 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Amelete Hihret year always. 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t eyear; 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR) { 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org eyear = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else if (isAmeteAlemEra()) { 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org eyear = internalGet(UCAL_YEAR, 1 + AMETE_MIHRET_DELTA) 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org - AMETE_MIHRET_DELTA; // Default to year 1 of Amelete Mihret 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // The year defaults to the epoch start, the era to AMETE_MIHRET 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t era = internalGet(UCAL_ERA, AMETE_MIHRET); 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (era == AMETE_MIHRET) { 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org eyear = internalGet(UCAL_YEAR, 1); // Default to year 1 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org eyear = internalGet(UCAL_YEAR, 1) - AMETE_MIHRET_DELTA; 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return eyear; 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*status*/) 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t eyear, month, day, era, year; 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org jdToCE(julianDay, getJDEpochOffset(), eyear, month, day); 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (isAmeteAlemEra()) { 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org era = AMETE_ALEM; 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org year = eyear + AMETE_MIHRET_DELTA; 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (eyear > 0) { 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org era = AMETE_MIHRET; 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org year = eyear; 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } else { 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org era = AMETE_ALEM; 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org year = eyear + AMETE_MIHRET_DELTA; 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org internalSet(UCAL_EXTENDED_YEAR, eyear); 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org internalSet(UCAL_ERA, era); 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org internalSet(UCAL_YEAR, year); 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org internalSet(UCAL_MONTH, month); 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org internalSet(UCAL_DATE, day); 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org internalSet(UCAL_DAY_OF_YEAR, (30 * month) + day); 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) const 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (isAmeteAlemEra() && field == UCAL_ERA) { 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return 0; // Only one era in this mode, era is always 0 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return CECalendar::handleGetLimit(field, limitType); 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The system maintains a static default century start date and Year. They are 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * initialized the first time they are used. Once the system default century date 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and year are set, they do not change. 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic UDate gSystemDefaultCenturyStart = DBL_MIN; 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic int32_t gSystemDefaultCenturyStartYear = -1; 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic icu::UInitOnce gSystemDefaultCenturyInit = U_INITONCE_INITIALIZER; 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgstatic void U_CALLCONV initializeSystemDefaultCentury() 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode status = U_ZERO_ERROR; 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org EthiopicCalendar calendar(Locale("@calendar=ethiopic"), status); 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (U_SUCCESS(status)) { 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org calendar.setTime(Calendar::getNow(), status); 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org calendar.add(UCAL_YEAR, -80, status); 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org gSystemDefaultCenturyStart = calendar.getTime(status); 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org gSystemDefaultCenturyStartYear = calendar.get(UCAL_YEAR, status); 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // We have no recourse upon failure unless we want to propagate the failure 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // out. 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgUDate 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::defaultCenturyStart() const 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // lazy-evaluate systemDefaultCenturyStart 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury); 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return gSystemDefaultCenturyStart; 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::defaultCenturyStartYear() const 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // lazy-evaluate systemDefaultCenturyStartYear 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org umtx_initOnce(gSystemDefaultCenturyInit, &initializeSystemDefaultCentury); 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (isAmeteAlemEra()) { 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return gSystemDefaultCenturyStartYear + AMETE_MIHRET_DELTA; 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org } 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return gSystemDefaultCenturyStartYear; 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::getJDEpochOffset() const 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return JD_EPOCH_OFFSET_AMETE_MIHRET; 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if 0 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// We do not want to introduce this API in ICU4C. 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// It was accidentally introduced in ICU4J as a public API. 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//------------------------------------------------------------------------- 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Calendar system Conversion methods... 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//------------------------------------------------------------------------- 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgint32_t 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgEthiopicCalendar::ethiopicToJD(int32_t year, int32_t month, int32_t date) 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return ceToJD(year, month, date, JD_EPOCH_OFFSET_AMETE_MIHRET); 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 206