ICU-4081 Remove tabs
X-SVN-Rev: 23240
This commit is contained in:
parent
d7afd7c71d
commit
79a5d8c208
@ -1,6 +1,6 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
* Copyright (C) 2007, International Business Machines Corporation
|
||||
* Copyright (C) 2007-2008, International Business Machines Corporation
|
||||
* and others. All Rights Reserved.
|
||||
******************************************************************************
|
||||
*
|
||||
@ -53,6 +53,28 @@ static U_NAMESPACE_QUALIFIER CalendarAstronomer *gChineseCalendarAstro = NULL;
|
||||
static U_NAMESPACE_QUALIFIER CalendarCache *gChineseCalendarWinterSolsticeCache = NULL;
|
||||
static U_NAMESPACE_QUALIFIER CalendarCache *gChineseCalendarNewYearCache = NULL;
|
||||
|
||||
/**
|
||||
* The start year of the Chinese calendar, the 61st year of the reign
|
||||
* of Huang Di. Some sources use the first year of his reign,
|
||||
* resulting in EXTENDED_YEAR values 60 years greater and ERA (cycle)
|
||||
* values one greater.
|
||||
*/
|
||||
static const int32_t CHINESE_EPOCH_YEAR = -2636; // Gregorian year
|
||||
|
||||
/**
|
||||
* The offset from GMT in milliseconds at which we perform astronomical
|
||||
* computations. Some sources use a different historically accurate
|
||||
* offset of GMT+7:45:40 for years before 1929; we do not do this.
|
||||
*/
|
||||
static const double CHINA_OFFSET = 8 * kOneHour;
|
||||
|
||||
/**
|
||||
* Value to be added or subtracted from the local days of a new moon to
|
||||
* get close to the next or prior new moon, but not cross it. Must be
|
||||
* >= 1 and < CalendarAstronomer.SYNODIC_MONTH.
|
||||
*/
|
||||
static const int32_t SYNODIC_GAP = 25;
|
||||
|
||||
|
||||
U_CDECL_BEGIN
|
||||
static UBool calendar_chinese_cleanup(void) {
|
||||
@ -91,12 +113,12 @@ Calendar* ChineseCalendar::clone() const {
|
||||
ChineseCalendar::ChineseCalendar(const Locale& aLocale, UErrorCode& success)
|
||||
: Calendar(TimeZone::createDefault(), aLocale, success)
|
||||
{
|
||||
isLeapYear = FALSE;
|
||||
isLeapYear = FALSE;
|
||||
setTimeInMillis(getNow(), success); // Call this again now that the vtable is set up properly.
|
||||
}
|
||||
|
||||
ChineseCalendar::ChineseCalendar(const ChineseCalendar& other) : Calendar(other) {
|
||||
isLeapYear = other.isLeapYear;
|
||||
isLeapYear = other.isLeapYear;
|
||||
}
|
||||
|
||||
ChineseCalendar::~ChineseCalendar()
|
||||
@ -145,7 +167,7 @@ static const int32_t LIMITS[UCAL_FIELD_COUNT][4] = {
|
||||
* @draft ICU 2.4
|
||||
*/
|
||||
int32_t ChineseCalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) const {
|
||||
return LIMITS[field][limitType];
|
||||
return LIMITS[field][limitType];
|
||||
}
|
||||
|
||||
|
||||
@ -162,8 +184,8 @@ int32_t ChineseCalendar::handleGetLimit(UCalendarDateFields field, ELimitType li
|
||||
*/
|
||||
int32_t ChineseCalendar::handleGetExtendedYear() {
|
||||
int32_t year;
|
||||
if (newestStamp(UCAL_ERA, UCAL_YEAR, kUnset) <= fStamp[UCAL_EXTENDED_YEAR]) {
|
||||
year = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
|
||||
if (newestStamp(UCAL_ERA, UCAL_YEAR, kUnset) <= fStamp[UCAL_EXTENDED_YEAR]) {
|
||||
year = internalGet(UCAL_EXTENDED_YEAR, 1); // Default to year 1
|
||||
} else {
|
||||
int32_t cycle = internalGet(UCAL_ERA, 1) - 1; // 0-based cycle
|
||||
year = cycle * 60 + internalGet(UCAL_YEAR, 1);
|
||||
@ -207,7 +229,7 @@ int32_t ChineseCalendar::handleGetMonthLength(int32_t extendedYear, int32_t mont
|
||||
void ChineseCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*status*/) {
|
||||
|
||||
computeChineseFields(julianDay - kEpochStartAsJulianDay, // local days
|
||||
getGregorianYear(), getGregorianMonth(),
|
||||
getGregorianYear(), getGregorianMonth(),
|
||||
TRUE); // set all fields
|
||||
}
|
||||
|
||||
@ -217,7 +239,7 @@ void ChineseCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*statu
|
||||
const UFieldResolutionTable ChineseCalendar::CHINESE_DATE_PRECEDENCE[] =
|
||||
{
|
||||
{
|
||||
{ UCAL_DAY_OF_MONTH, kResolveSTOP },
|
||||
{ UCAL_DAY_OF_MONTH, kResolveSTOP },
|
||||
{ UCAL_WEEK_OF_YEAR, UCAL_DAY_OF_WEEK, kResolveSTOP },
|
||||
{ UCAL_WEEK_OF_MONTH, UCAL_DAY_OF_WEEK, kResolveSTOP },
|
||||
{ UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_DAY_OF_WEEK, kResolveSTOP },
|
||||
@ -226,7 +248,7 @@ const UFieldResolutionTable ChineseCalendar::CHINESE_DATE_PRECEDENCE[] =
|
||||
{ UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_DOW_LOCAL, kResolveSTOP },
|
||||
{ UCAL_DAY_OF_YEAR, kResolveSTOP },
|
||||
{ kResolveRemap | UCAL_DAY_OF_MONTH, UCAL_IS_LEAP_MONTH, kResolveSTOP },
|
||||
{ kResolveSTOP }
|
||||
{ kResolveSTOP }
|
||||
},
|
||||
{
|
||||
{ UCAL_WEEK_OF_YEAR, kResolveSTOP },
|
||||
@ -234,7 +256,7 @@ const UFieldResolutionTable ChineseCalendar::CHINESE_DATE_PRECEDENCE[] =
|
||||
{ UCAL_DAY_OF_WEEK_IN_MONTH, kResolveSTOP },
|
||||
{ kResolveRemap | UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_DAY_OF_WEEK, kResolveSTOP },
|
||||
{ kResolveRemap | UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_DOW_LOCAL, kResolveSTOP },
|
||||
{ kResolveSTOP }
|
||||
{ kResolveSTOP }
|
||||
},
|
||||
{{kResolveSTOP}}
|
||||
};
|
||||
@ -263,14 +285,14 @@ const UFieldResolutionTable* ChineseCalendar::getFieldResolutionTable() const {
|
||||
*/
|
||||
int32_t ChineseCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const {
|
||||
|
||||
ChineseCalendar *nonConstThis = (ChineseCalendar*)this; // cast away const
|
||||
ChineseCalendar *nonConstThis = (ChineseCalendar*)this; // cast away const
|
||||
|
||||
// If the month is out of range, adjust it into range, and
|
||||
// modify the extended year value accordingly.
|
||||
if (month < 0 || month > 11) {
|
||||
double m = month;
|
||||
eyear += (int32_t)Math::floorDivide(m, 12.0, m);
|
||||
month = (int32_t)m;
|
||||
month = (int32_t)m;
|
||||
}
|
||||
|
||||
int32_t gyear = eyear + CHINESE_EPOCH_YEAR - 1; // Gregorian year
|
||||
@ -286,10 +308,10 @@ int32_t ChineseCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, U
|
||||
// Ignore IS_LEAP_MONTH field if useMonth is false
|
||||
int32_t isLeapMonth = useMonth ? saveIsLeapMonth : 0;
|
||||
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
nonConstThis->computeGregorianFields(julianDay, status);
|
||||
if (U_FAILURE(status))
|
||||
return 0;
|
||||
if (U_FAILURE(status))
|
||||
return 0;
|
||||
|
||||
// This will modify the MONTH and IS_LEAP_MONTH fields (only)
|
||||
nonConstThis->computeChineseFields(newMoon, getGregorianYear(),
|
||||
@ -317,15 +339,15 @@ void ChineseCalendar::add(UCalendarDateFields field, int32_t amount, UErrorCode&
|
||||
case UCAL_MONTH:
|
||||
if (amount != 0) {
|
||||
int32_t dom = get(UCAL_DAY_OF_MONTH, status);
|
||||
if (U_FAILURE(status)) break;
|
||||
if (U_FAILURE(status)) break;
|
||||
int32_t day = get(UCAL_JULIAN_DAY, status) - kEpochStartAsJulianDay; // Get local day
|
||||
if (U_FAILURE(status)) break;
|
||||
if (U_FAILURE(status)) break;
|
||||
int32_t moon = day - dom + 1; // New moon
|
||||
offsetMonth(moon, dom, amount);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Calendar::add(field, amount, status);
|
||||
Calendar::add(field, amount, status);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -347,9 +369,9 @@ void ChineseCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode
|
||||
case UCAL_MONTH:
|
||||
if (amount != 0) {
|
||||
int32_t dom = get(UCAL_DAY_OF_MONTH, status);
|
||||
if (U_FAILURE(status)) break;
|
||||
if (U_FAILURE(status)) break;
|
||||
int32_t day = get(UCAL_JULIAN_DAY, status) - kEpochStartAsJulianDay; // Get local day
|
||||
if (U_FAILURE(status)) break;
|
||||
if (U_FAILURE(status)) break;
|
||||
int32_t moon = day - dom + 1; // New moon (start of this month)
|
||||
|
||||
// Note throughout the following: Months 12 and 1 are never
|
||||
@ -359,7 +381,7 @@ void ChineseCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode
|
||||
// value from 0..11 in a non-leap year, and from 0..12 in a
|
||||
// leap year.
|
||||
int32_t m = get(UCAL_MONTH, status); // 0-based month
|
||||
if (U_FAILURE(status)) break;
|
||||
if (U_FAILURE(status)) break;
|
||||
if (isLeapYear) { // (member variable)
|
||||
if (get(UCAL_IS_LEAP_MONTH, status) == 1) {
|
||||
++m;
|
||||
@ -372,13 +394,13 @@ void ChineseCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode
|
||||
// no leap month between month 0 and month m;
|
||||
// otherwise it will be the start of month 1.
|
||||
int moon1 = moon -
|
||||
(int) (CalendarAstronomer::SYNODIC_MONTH * (m - 0.5));
|
||||
(int) (CalendarAstronomer::SYNODIC_MONTH * (m - 0.5));
|
||||
moon1 = newMoonNear(moon1, TRUE);
|
||||
if (isLeapMonthBetween(moon1, moon)) {
|
||||
++m;
|
||||
}
|
||||
}
|
||||
if (U_FAILURE(status)) break;
|
||||
if (U_FAILURE(status)) break;
|
||||
}
|
||||
|
||||
// Now do the standard roll computation on m, with the
|
||||
@ -395,13 +417,13 @@ void ChineseCalendar::roll(UCalendarDateFields field, int32_t amount, UErrorCode
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Calendar::roll(field, amount, status);
|
||||
Calendar::roll(field, amount, status);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ChineseCalendar::roll(EDateFields field, int32_t amount, UErrorCode& status) {
|
||||
roll((UCalendarDateFields)field, amount, status);
|
||||
roll((UCalendarDateFields)field, amount, status);
|
||||
}
|
||||
|
||||
|
||||
@ -409,35 +431,13 @@ void ChineseCalendar::roll(EDateFields field, int32_t amount, UErrorCode& status
|
||||
// Support methods and constants
|
||||
//------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* The start year of the Chinese calendar, the 61st year of the reign
|
||||
* of Huang Di. Some sources use the first year of his reign,
|
||||
* resulting in EXTENDED_YEAR values 60 years greater and ERA (cycle)
|
||||
* values one greater.
|
||||
*/
|
||||
const int32_t ChineseCalendar::CHINESE_EPOCH_YEAR = -2636; // Gregorian year
|
||||
|
||||
/**
|
||||
* The offset from GMT in milliseconds at which we perform astronomical
|
||||
* computations. Some sources use a different historically accurate
|
||||
* offset of GMT+7:45:40 for years before 1929; we do not do this.
|
||||
*/
|
||||
const double ChineseCalendar::CHINA_OFFSET = 8 * kOneHour;
|
||||
|
||||
/**
|
||||
* Value to be added or subtracted from the local days of a new moon to
|
||||
* get close to the next or prior new moon, but not cross it. Must be
|
||||
* >= 1 and < CalendarAstronomer.SYNODIC_MONTH.
|
||||
*/
|
||||
const int32_t ChineseCalendar::SYNODIC_GAP = 25;
|
||||
|
||||
/**
|
||||
* Convert local days to UTC epoch milliseconds.
|
||||
* @param days days after January 1, 1970 0:00 Asia/Shanghai
|
||||
* @return milliseconds after January 1, 1970 0:00 GMT
|
||||
*/
|
||||
double ChineseCalendar::daysToMillis(double days) {
|
||||
return (days * kOneDay) - CHINA_OFFSET;
|
||||
return (days * kOneDay) - CHINA_OFFSET;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -446,7 +446,7 @@ double ChineseCalendar::daysToMillis(double days) {
|
||||
* @return days after January 1, 1970 0:00 Asia/Shanghai
|
||||
*/
|
||||
double ChineseCalendar::millisToDays(double millis) {
|
||||
return Math::floorDivide(millis + CHINA_OFFSET, kOneDay);
|
||||
return Math::floorDivide(millis + CHINA_OFFSET, kOneDay);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
@ -464,14 +464,14 @@ double ChineseCalendar::millisToDays(double millis) {
|
||||
*/
|
||||
int32_t ChineseCalendar::winterSolstice(int32_t gyear) const {
|
||||
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
int32_t cacheValue = CalendarCache::get(&gChineseCalendarWinterSolsticeCache, gyear, status);
|
||||
|
||||
if (cacheValue == 0) {
|
||||
// In books December 15 is used, but it fails for some years
|
||||
// using our algorithms, e.g.: 1298 1391 1492 1553 1560. That
|
||||
// is, winterSolstice(1298) starts search at Dec 14 08:00:00
|
||||
// PST 1298 with a final result of Dec 14 10:31:59 PST 1299.
|
||||
if (cacheValue == 0) {
|
||||
// In books December 15 is used, but it fails for some years
|
||||
// using our algorithms, e.g.: 1298 1391 1492 1553 1560. That
|
||||
// is, winterSolstice(1298) starts search at Dec 14 08:00:00
|
||||
// PST 1298 with a final result of Dec 14 10:31:59 PST 1299.
|
||||
double ms = daysToMillis(Grego::fieldsToDay(gyear, UCAL_DECEMBER, 1));
|
||||
|
||||
umtx_lock(&astroLock);
|
||||
@ -480,17 +480,17 @@ int32_t ChineseCalendar::winterSolstice(int32_t gyear) const {
|
||||
ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
|
||||
}
|
||||
gChineseCalendarAstro->setTime(ms);
|
||||
UDate solarLong = gChineseCalendarAstro->getSunTime(CalendarAstronomer::WINTER_SOLSTICE(), TRUE);
|
||||
UDate solarLong = gChineseCalendarAstro->getSunTime(CalendarAstronomer::WINTER_SOLSTICE(), TRUE);
|
||||
umtx_unlock(&astroLock);
|
||||
|
||||
// Winter solstice is 270 degrees solar longitude aka Dongzhi
|
||||
cacheValue = (int32_t)millisToDays(solarLong);
|
||||
// Winter solstice is 270 degrees solar longitude aka Dongzhi
|
||||
cacheValue = (int32_t)millisToDays(solarLong);
|
||||
CalendarCache::put(&gChineseCalendarWinterSolsticeCache, gyear, cacheValue, status);
|
||||
}
|
||||
}
|
||||
if(U_FAILURE(status)) {
|
||||
cacheValue = 0;
|
||||
}
|
||||
return cacheValue;
|
||||
return cacheValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -510,10 +510,10 @@ int32_t ChineseCalendar::newMoonNear(double days, UBool after) const {
|
||||
ucln_i18n_registerCleanup(UCLN_I18N_CHINESE_CALENDAR, calendar_chinese_cleanup);
|
||||
}
|
||||
gChineseCalendarAstro->setTime(daysToMillis(days));
|
||||
UDate newMoon = gChineseCalendarAstro->getMoonTime(CalendarAstronomer::NEW_MOON(), after);
|
||||
UDate newMoon = gChineseCalendarAstro->getMoonTime(CalendarAstronomer::NEW_MOON(), after);
|
||||
umtx_unlock(&astroLock);
|
||||
|
||||
return (int32_t) millisToDays(newMoon);
|
||||
return (int32_t) millisToDays(newMoon);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -524,8 +524,8 @@ int32_t ChineseCalendar::newMoonNear(double days, UBool after) const {
|
||||
* @return the nearest integer number of months between day1 and day2
|
||||
*/
|
||||
int32_t ChineseCalendar::synodicMonthsBetween(int32_t day1, int32_t day2) const {
|
||||
double roundme = ((day2 - day1) / CalendarAstronomer::SYNODIC_MONTH);
|
||||
return (int32_t) (roundme + (roundme >= 0 ? .5 : -.5));
|
||||
double roundme = ((day2 - day1) / CalendarAstronomer::SYNODIC_MONTH);
|
||||
return (int32_t) (roundme + (roundme >= 0 ? .5 : -.5));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -545,12 +545,12 @@ int32_t ChineseCalendar::majorSolarTerm(int32_t days) const {
|
||||
UDate solarLongitude = gChineseCalendarAstro->getSunLongitude();
|
||||
umtx_unlock(&astroLock);
|
||||
|
||||
// Compute (floor(solarLongitude / (pi/6)) + 2) % 12
|
||||
// Compute (floor(solarLongitude / (pi/6)) + 2) % 12
|
||||
int32_t term = ( ((int32_t)(6 * solarLongitude / CalendarAstronomer::PI)) + 2 ) % 12;
|
||||
if (term < 1) {
|
||||
term += 12;
|
||||
}
|
||||
return term;
|
||||
if (term < 1) {
|
||||
term += 12;
|
||||
}
|
||||
return term;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -559,8 +559,8 @@ int32_t ChineseCalendar::majorSolarTerm(int32_t days) const {
|
||||
* moon
|
||||
*/
|
||||
UBool ChineseCalendar::hasNoMajorSolarTerm(int32_t newMoon) const {
|
||||
return majorSolarTerm(newMoon) ==
|
||||
majorSolarTerm(newMoonNear(newMoon + SYNODIC_GAP, TRUE));
|
||||
return majorSolarTerm(newMoon) ==
|
||||
majorSolarTerm(newMoonNear(newMoon + SYNODIC_GAP, TRUE));
|
||||
}
|
||||
|
||||
|
||||
@ -662,7 +662,7 @@ void ChineseCalendar::computeChineseFields(int32_t days, int32_t gyear, int32_t
|
||||
|
||||
// 0->0,60 1->1,1 60->1,60 61->2,1 etc.
|
||||
int32_t yearOfCycle;
|
||||
int32_t cycle = Math::floorDivide(year - 1, 60, yearOfCycle);
|
||||
int32_t cycle = Math::floorDivide(year - 1, 60, yearOfCycle);
|
||||
internalSet(UCAL_ERA, cycle + 1);
|
||||
internalSet(UCAL_YEAR, yearOfCycle + 1);
|
||||
|
||||
@ -692,7 +692,7 @@ void ChineseCalendar::computeChineseFields(int32_t days, int32_t gyear, int32_t
|
||||
* Chinese new year of the given year (this will be a new moon)
|
||||
*/
|
||||
int32_t ChineseCalendar::newYear(int32_t gyear) const {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
int32_t cacheValue = CalendarCache::get(&gChineseCalendarNewYearCache, gyear, status);
|
||||
|
||||
if (cacheValue == 0) {
|
||||
@ -715,7 +715,7 @@ int32_t ChineseCalendar::newYear(int32_t gyear) const {
|
||||
if(U_FAILURE(status)) {
|
||||
cacheValue = 0;
|
||||
}
|
||||
return cacheValue;
|
||||
return cacheValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -730,10 +730,10 @@ int32_t ChineseCalendar::newYear(int32_t gyear) const {
|
||||
* the start position
|
||||
*/
|
||||
void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta) {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
|
||||
// Move to the middle of the month before our target month.
|
||||
newMoon += (int32_t) (CalendarAstronomer::SYNODIC_MONTH * (delta - 0.5));
|
||||
newMoon += (int32_t) (CalendarAstronomer::SYNODIC_MONTH * (delta - 0.5));
|
||||
|
||||
// Search forward to the target month's new moon
|
||||
newMoon = newMoonNear(newMoon, TRUE);
|
||||
@ -752,7 +752,7 @@ void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta) {
|
||||
complete(status);
|
||||
if (U_FAILURE(status)) return;
|
||||
if (getActualMaximum(UCAL_DAY_OF_MONTH, status) >= dom) {
|
||||
if (U_FAILURE(status)) return;
|
||||
if (U_FAILURE(status)) return;
|
||||
set(UCAL_JULIAN_DAY, jd);
|
||||
}
|
||||
} else {
|
||||
|
@ -1,8 +1,8 @@
|
||||
/*
|
||||
********************************************************************************
|
||||
* Copyright (C) 2007, International Business Machines Corporation
|
||||
*****************************************************************************
|
||||
* Copyright (C) 2007-2008, International Business Machines Corporation
|
||||
* and others. All Rights Reserved.
|
||||
******************************************************************************
|
||||
*****************************************************************************
|
||||
*
|
||||
* File CHNSECAL.H
|
||||
*
|
||||
@ -162,29 +162,6 @@ private:
|
||||
|
||||
static const UFieldResolutionTable CHINESE_DATE_PRECEDENCE[];
|
||||
|
||||
/**
|
||||
* The start year of the Chinese calendar, the 61st year of the reign
|
||||
* of Huang Di. Some sources use the first year of his reign,
|
||||
* resulting in EXTENDED_YEAR values 60 years greater and ERA (cycle)
|
||||
* values one greater.
|
||||
*/
|
||||
static const int32_t CHINESE_EPOCH_YEAR; // Gregorian year
|
||||
|
||||
/**
|
||||
* The offset from GMT in milliseconds at which we perform astronomical
|
||||
* computations. Some sources use a different historically accurate
|
||||
* offset of GMT+7:45:40 for years before 1929; we do not do this.
|
||||
*/
|
||||
static const double CHINA_OFFSET;
|
||||
|
||||
/**
|
||||
* Value to be added or subtracted from the local days of a new moon to
|
||||
* get close to the next or prior new moon, but not cross it. Must be
|
||||
* >= 1 and < CalendarAstronomer.SYNODIC_MONTH.
|
||||
*/
|
||||
static const int32_t SYNODIC_GAP;
|
||||
|
||||
|
||||
static double daysToMillis(double days);
|
||||
static double millisToDays(double millis);
|
||||
virtual int32_t winterSolstice(int32_t gyear) const;
|
||||
@ -194,7 +171,7 @@ private:
|
||||
virtual UBool hasNoMajorSolarTerm(int32_t newMoon) const;
|
||||
virtual UBool isLeapMonthBetween(int32_t newMoon1, int32_t newMoon2) const;
|
||||
virtual void computeChineseFields(int32_t days, int32_t gyear,
|
||||
int32_t gmonth, UBool setAllFields);
|
||||
int32_t gmonth, UBool setAllFields);
|
||||
virtual int32_t newYear(int32_t gyear) const;
|
||||
virtual void offsetMonth(int32_t newMoon, int32_t dom, int32_t delta);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user