/
opt
/
alt
/
libicu
/
usr
/
include
/
unicode
/
/opt/alt/libicu/usr/include/unicode
mkdir
upload
Name
Size
Mode
Actions
alphaindex.h
27056
0644
edit
dl
rm
appendable.h
8632
0644
edit
dl
rm
basictz.h
9055
0644
edit
dl
rm
brkiter.h
28195
0644
edit
dl
rm
bytestream.h
9767
0644
edit
dl
rm
bytestrie.h
19718
0644
edit
dl
rm
bytestriebuilder.h
7186
0644
edit
dl
rm
calendar.h
107581
0644
edit
dl
rm
caniter.h
7550
0644
edit
dl
rm
casemap.h
25871
0644
edit
dl
rm
char16ptr.h
7331
0644
edit
dl
rm
chariter.h
24573
0644
edit
dl
rm
choicfmt.h
24418
0644
edit
dl
rm
coleitr.h
14033
0644
edit
dl
rm
coll.h
56928
0644
edit
dl
rm
compactdecimalformat.h
6971
0644
edit
dl
rm
curramt.h
3782
0644
edit
dl
rm
currpinf.h
7412
0644
edit
dl
rm
currunit.h
3606
0644
edit
dl
rm
datefmt.h
41334
0644
edit
dl
rm
dbbi.h
1133
0644
edit
dl
rm
dcfmtsym.h
20584
0644
edit
dl
rm
decimfmt.h
88478
0644
edit
dl
rm
docmain.h
6878
0644
edit
dl
rm
dtfmtsym.h
38548
0644
edit
dl
rm
dtintrv.h
3848
0644
edit
dl
rm
dtitvfmt.h
43898
0644
edit
dl
rm
dtitvinf.h
18903
0644
edit
dl
rm
dtptngen.h
25626
0644
edit
dl
rm
dtrule.h
8831
0644
edit
dl
rm
edits.h
21169
0644
edit
dl
rm
enumset.h
2130
0644
edit
dl
rm
errorcode.h
4894
0644
edit
dl
rm
fieldpos.h
8838
0644
edit
dl
rm
filteredbrk.h
5364
0644
edit
dl
rm
fmtable.h
24946
0644
edit
dl
rm
format.h
12741
0644
edit
dl
rm
fpositer.h
3047
0644
edit
dl
rm
gender.h
3347
0644
edit
dl
rm
gregocal.h
32331
0644
edit
dl
rm
icudataver.h
1051
0644
edit
dl
rm
icuplug.h
12166
0644
edit
dl
rm
idna.h
12938
0644
edit
dl
rm
listformatter.h
6331
0644
edit
dl
rm
localpointer.h
17284
0644
edit
dl
rm
locdspnm.h
7224
0644
edit
dl
rm
locid.h
46001
0644
edit
dl
rm
measfmt.h
12298
0644
edit
dl
rm
measunit.h
39427
0644
edit
dl
rm
measure.h
4361
0644
edit
dl
rm
messagepattern.h
34460
0644
edit
dl
rm
msgfmt.h
44398
0644
edit
dl
rm
normalizer2.h
34789
0644
edit
dl
rm
normlzr.h
31476
0644
edit
dl
rm
nounit.h
2693
0644
edit
dl
rm
numberformatter.h
89164
0644
edit
dl
rm
numberrangeformatter.h
29430
0644
edit
dl
rm
numfmt.h
50322
0644
edit
dl
rm
numsys.h
6895
0644
edit
dl
rm
parseerr.h
3155
0644
edit
dl
rm
parsepos.h
5581
0644
edit
dl
rm
platform.h
27754
0644
edit
dl
rm
plurfmt.h
25786
0644
edit
dl
rm
plurrule.h
17834
0644
edit
dl
rm
ptypes.h
3577
0644
edit
dl
rm
putil.h
6487
0644
edit
dl
rm
rbbi.h
27047
0644
edit
dl
rm
rbnf.h
50984
0644
edit
dl
rm
rbtz.h
15838
0644
edit
dl
rm
regex.h
86943
0644
edit
dl
rm
region.h
9342
0644
edit
dl
rm
reldatefmt.h
14812
0644
edit
dl
rm
rep.h
9726
0644
edit
dl
rm
resbund.h
18440
0644
edit
dl
rm
schriter.h
6410
0644
edit
dl
rm
scientificnumberformatter.h
6474
0644
edit
dl
rm
search.h
22742
0644
edit
dl
rm
selfmt.h
14579
0644
edit
dl
rm
simpleformatter.h
11701
0644
edit
dl
rm
simpletz.h
46389
0644
edit
dl
rm
smpdtfmt.h
72442
0644
edit
dl
rm
sortkey.h
11383
0644
edit
dl
rm
std_string.h
1015
0644
edit
dl
rm
strenum.h
10279
0644
edit
dl
rm
stringoptions.h
5926
0644
edit
dl
rm
stringpiece.h
6610
0644
edit
dl
rm
stringtriebuilder.h
15636
0644
edit
dl
rm
stsearch.h
21801
0644
edit
dl
rm
symtable.h
4312
0644
edit
dl
rm
tblcoll.h
37272
0644
edit
dl
rm
timezone.h
41862
0644
edit
dl
rm
tmunit.h
3371
0644
edit
dl
rm
tmutamt.h
4918
0644
edit
dl
rm
tmutfmt.h
7977
0644
edit
dl
rm
translit.h
67339
0644
edit
dl
rm
tzfmt.h
43846
0644
edit
dl
rm
tznames.h
17190
0644
edit
dl
rm
tzrule.h
36170
0644
edit
dl
rm
tztrans.h
6214
0644
edit
dl
rm
ubidi.h
91711
0644
edit
dl
rm
ubiditransform.h
12950
0644
edit
dl
rm
ubrk.h
24547
0644
edit
dl
rm
ucal.h
56526
0644
edit
dl
rm
ucasemap.h
15546
0644
edit
dl
rm
ucat.h
5484
0644
edit
dl
rm
uchar.h
143314
0644
edit
dl
rm
ucharstrie.h
21569
0644
edit
dl
rm
ucharstriebuilder.h
7316
0644
edit
dl
rm
uchriter.h
13457
0644
edit
dl
rm
uclean.h
11474
0644
edit
dl
rm
ucnv.h
85085
0644
edit
dl
rm
ucnvsel.h
6283
0644
edit
dl
rm
ucnv_cb.h
6748
0644
edit
dl
rm
ucnv_err.h
21492
0644
edit
dl
rm
ucol.h
62864
0644
edit
dl
rm
ucoleitr.h
9684
0644
edit
dl
rm
uconfig.h
11949
0644
edit
dl
rm
ucpmap.h
5709
0644
edit
dl
rm
ucptrie.h
22824
0644
edit
dl
rm
ucsdet.h
15018
0644
edit
dl
rm
ucurr.h
15947
0644
edit
dl
rm
udat.h
61572
0644
edit
dl
rm
udata.h
15905
0644
edit
dl
rm
udateintervalformat.h
6950
0644
edit
dl
rm
udatpg.h
26664
0644
edit
dl
rm
udisplaycontext.h
6029
0644
edit
dl
rm
uenum.h
7970
0644
edit
dl
rm
ufieldpositer.h
4461
0644
edit
dl
rm
uformattable.h
11198
0644
edit
dl
rm
ugender.h
2052
0644
edit
dl
rm
uidna.h
34169
0644
edit
dl
rm
uiter.h
23319
0644
edit
dl
rm
uldnames.h
10702
0644
edit
dl
rm
ulistformatter.h
5148
0644
edit
dl
rm
uloc.h
51971
0644
edit
dl
rm
ulocdata.h
11533
0644
edit
dl
rm
umachine.h
13509
0644
edit
dl
rm
umisc.h
1365
0644
edit
dl
rm
umsg.h
24812
0644
edit
dl
rm
umutablecptrie.h
8477
0644
edit
dl
rm
unifilt.h
3716
0644
edit
dl
rm
unifunct.h
4079
0644
edit
dl
rm
unimatch.h
6184
0644
edit
dl
rm
unirepl.h
3403
0644
edit
dl
rm
uniset.h
65796
0644
edit
dl
rm
unistr.h
178587
0644
edit
dl
rm
unorm.h
20938
0644
edit
dl
rm
unorm2.h
25254
0644
edit
dl
rm
unum.h
54666
0644
edit
dl
rm
unumberformatter.h
24335
0644
edit
dl
rm
unumsys.h
7314
0644
edit
dl
rm
uobject.h
10958
0644
edit
dl
rm
upluralrules.h
6880
0644
edit
dl
rm
uregex.h
73784
0644
edit
dl
rm
uregion.h
10073
0644
edit
dl
rm
ureldatefmt.h
12518
0644
edit
dl
rm
urename.h
130791
0644
edit
dl
rm
urep.h
5507
0644
edit
dl
rm
ures.h
37404
0644
edit
dl
rm
uscript.h
27153
0644
edit
dl
rm
usearch.h
39038
0644
edit
dl
rm
uset.h
40958
0644
edit
dl
rm
usetiter.h
9719
0644
edit
dl
rm
ushape.h
18432
0644
edit
dl
rm
uspoof.h
67613
0644
edit
dl
rm
usprep.h
8331
0644
edit
dl
rm
ustdio.h
39469
0644
edit
dl
rm
ustream.h
1844
0644
edit
dl
rm
ustring.h
74211
0644
edit
dl
rm
ustringtrie.h
3224
0644
edit
dl
rm
utext.h
59503
0644
edit
dl
rm
utf.h
8046
0644
edit
dl
rm
utf8.h
30734
0644
edit
dl
rm
utf16.h
22866
0644
edit
dl
rm
utf32.h
763
0644
edit
dl
rm
utf_old.h
44827
0644
edit
dl
rm
utmscale.h
14113
0644
edit
dl
rm
utrace.h
14219
0644
edit
dl
rm
utrans.h
26157
0644
edit
dl
rm
utypes.h
31212
0644
edit
dl
rm
uvernum.h
6206
0644
edit
dl
rm
uversion.h
6865
0644
edit
dl
rm
vtzone.h
20651
0644
edit
dl
rm
Edit:
/opt/alt/libicu/usr/include/unicode/gregocal.h
(32331B)
// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* * Copyright (C) 1997-2013, International Business Machines Corporation and others. * All Rights Reserved. ******************************************************************************** * * File GREGOCAL.H * * Modification History: * * Date Name Description * 04/22/97 aliu Overhauled header. * 07/28/98 stephen Sync with JDK 1.2 * 09/04/98 stephen Re-sync with JDK 8/31 putback * 09/14/98 stephen Changed type of kOneDay, kOneWeek to double. * Fixed bug in roll() * 10/15/99 aliu Fixed j31, incorrect WEEK_OF_YEAR computation. * Added documentation of WEEK_OF_YEAR computation. * 10/15/99 aliu Fixed j32, cannot set date to Feb 29 2000 AD. * {JDK bug 4210209 4209272} * 11/07/2003 srl Update, clean up documentation. ******************************************************************************** */ #ifndef GREGOCAL_H #define GREGOCAL_H #include "unicode/utypes.h" #if !UCONFIG_NO_FORMATTING #include "unicode/calendar.h" /** * \file * \brief C++ API: Concrete class which provides the standard calendar. */ U_NAMESPACE_BEGIN /** * Concrete class which provides the standard calendar used by most of the world. * <P> * The standard (Gregorian) calendar has 2 eras, BC and AD. * <P> * This implementation handles a single discontinuity, which corresponds by default to * the date the Gregorian calendar was originally instituted (October 15, 1582). Not all * countries adopted the Gregorian calendar then, so this cutover date may be changed by * the caller. * <P> * Prior to the institution of the Gregorian Calendar, New Year's Day was March 25. To * avoid confusion, this Calendar always uses January 1. A manual adjustment may be made * if desired for dates that are prior to the Gregorian changeover and which fall * between January 1 and March 24. * * <p>Values calculated for the <code>WEEK_OF_YEAR</code> field range from 1 to * 53. Week 1 for a year is the first week that contains at least * <code>getMinimalDaysInFirstWeek()</code> days from that year. It thus * depends on the values of <code>getMinimalDaysInFirstWeek()</code>, * <code>getFirstDayOfWeek()</code>, and the day of the week of January 1. * Weeks between week 1 of one year and week 1 of the following year are * numbered sequentially from 2 to 52 or 53 (as needed). * * <p>For example, January 1, 1998 was a Thursday. If * <code>getFirstDayOfWeek()</code> is <code>MONDAY</code> and * <code>getMinimalDaysInFirstWeek()</code> is 4 (these are the values * reflecting ISO 8601 and many national standards), then week 1 of 1998 starts * on December 29, 1997, and ends on January 4, 1998. If, however, * <code>getFirstDayOfWeek()</code> is <code>SUNDAY</code>, then week 1 of 1998 * starts on January 4, 1998, and ends on January 10, 1998; the first three days * of 1998 then are part of week 53 of 1997. * * <p>Example for using GregorianCalendar: * <pre> * \code * // get the supported ids for GMT-08:00 (Pacific Standard Time) * UErrorCode success = U_ZERO_ERROR; * const StringEnumeration *ids = TimeZone::createEnumeration(-8 * 60 * 60 * 1000); * // if no ids were returned, something is wrong. get out. * if (ids == 0 || ids->count(success) == 0) { * return; * } * * // begin output * cout << "Current Time" << endl; * * // create a Pacific Standard Time time zone * SimpleTimeZone* pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids->unext(NULL, success))); * * // set up rules for daylight savings time * pdt->setStartRule(UCAL_MARCH, 1, UCAL_SUNDAY, 2 * 60 * 60 * 1000); * pdt->setEndRule(UCAL_NOVEMBER, 2, UCAL_SUNDAY, 2 * 60 * 60 * 1000); * * // create a GregorianCalendar with the Pacific Daylight time zone * // and the current date and time * Calendar* calendar = new GregorianCalendar( pdt, success ); * * // print out a bunch of interesting things * cout << "ERA: " << calendar->get( UCAL_ERA, success ) << endl; * cout << "YEAR: " << calendar->get( UCAL_YEAR, success ) << endl; * cout << "MONTH: " << calendar->get( UCAL_MONTH, success ) << endl; * cout << "WEEK_OF_YEAR: " << calendar->get( UCAL_WEEK_OF_YEAR, success ) << endl; * cout << "WEEK_OF_MONTH: " << calendar->get( UCAL_WEEK_OF_MONTH, success ) << endl; * cout << "DATE: " << calendar->get( UCAL_DATE, success ) << endl; * cout << "DAY_OF_MONTH: " << calendar->get( UCAL_DAY_OF_MONTH, success ) << endl; * cout << "DAY_OF_YEAR: " << calendar->get( UCAL_DAY_OF_YEAR, success ) << endl; * cout << "DAY_OF_WEEK: " << calendar->get( UCAL_DAY_OF_WEEK, success ) << endl; * cout << "DAY_OF_WEEK_IN_MONTH: " << calendar->get( UCAL_DAY_OF_WEEK_IN_MONTH, success ) << endl; * cout << "AM_PM: " << calendar->get( UCAL_AM_PM, success ) << endl; * cout << "HOUR: " << calendar->get( UCAL_HOUR, success ) << endl; * cout << "HOUR_OF_DAY: " << calendar->get( UCAL_HOUR_OF_DAY, success ) << endl; * cout << "MINUTE: " << calendar->get( UCAL_MINUTE, success ) << endl; * cout << "SECOND: " << calendar->get( UCAL_SECOND, success ) << endl; * cout << "MILLISECOND: " << calendar->get( UCAL_MILLISECOND, success ) << endl; * cout << "ZONE_OFFSET: " << (calendar->get( UCAL_ZONE_OFFSET, success )/(60*60*1000)) << endl; * cout << "DST_OFFSET: " << (calendar->get( UCAL_DST_OFFSET, success )/(60*60*1000)) << endl; * * cout << "Current Time, with hour reset to 3" << endl; * calendar->clear(UCAL_HOUR_OF_DAY); // so doesn't override * calendar->set(UCAL_HOUR, 3); * cout << "ERA: " << calendar->get( UCAL_ERA, success ) << endl; * cout << "YEAR: " << calendar->get( UCAL_YEAR, success ) << endl; * cout << "MONTH: " << calendar->get( UCAL_MONTH, success ) << endl; * cout << "WEEK_OF_YEAR: " << calendar->get( UCAL_WEEK_OF_YEAR, success ) << endl; * cout << "WEEK_OF_MONTH: " << calendar->get( UCAL_WEEK_OF_MONTH, success ) << endl; * cout << "DATE: " << calendar->get( UCAL_DATE, success ) << endl; * cout << "DAY_OF_MONTH: " << calendar->get( UCAL_DAY_OF_MONTH, success ) << endl; * cout << "DAY_OF_YEAR: " << calendar->get( UCAL_DAY_OF_YEAR, success ) << endl; * cout << "DAY_OF_WEEK: " << calendar->get( UCAL_DAY_OF_WEEK, success ) << endl; * cout << "DAY_OF_WEEK_IN_MONTH: " << calendar->get( UCAL_DAY_OF_WEEK_IN_MONTH, success ) << endl; * cout << "AM_PM: " << calendar->get( UCAL_AM_PM, success ) << endl; * cout << "HOUR: " << calendar->get( UCAL_HOUR, success ) << endl; * cout << "HOUR_OF_DAY: " << calendar->get( UCAL_HOUR_OF_DAY, success ) << endl; * cout << "MINUTE: " << calendar->get( UCAL_MINUTE, success ) << endl; * cout << "SECOND: " << calendar->get( UCAL_SECOND, success ) << endl; * cout << "MILLISECOND: " << calendar->get( UCAL_MILLISECOND, success ) << endl; * cout << "ZONE_OFFSET: " << (calendar->get( UCAL_ZONE_OFFSET, success )/(60*60*1000)) << endl; // in hours * cout << "DST_OFFSET: " << (calendar->get( UCAL_DST_OFFSET, success )/(60*60*1000)) << endl; // in hours * * if (U_FAILURE(success)) { * cout << "An error occured. success=" << u_errorName(success) << endl; * } * * delete ids; * delete calendar; // also deletes pdt * \endcode * </pre> * @stable ICU 2.0 */ class U_I18N_API GregorianCalendar: public Calendar { public: /** * Useful constants for GregorianCalendar and TimeZone. * @stable ICU 2.0 */ enum EEras { BC, AD }; /** * Constructs a default GregorianCalendar using the current time in the default time * zone with the default locale. * * @param success Indicates the status of GregorianCalendar object construction. * Returns U_ZERO_ERROR if constructed successfully. * @stable ICU 2.0 */ GregorianCalendar(UErrorCode& success); /** * Constructs a GregorianCalendar based on the current time in the given time zone * with the default locale. Clients are no longer responsible for deleting the given * time zone object after it's adopted. * * @param zoneToAdopt The given timezone. * @param success Indicates the status of GregorianCalendar object construction. * Returns U_ZERO_ERROR if constructed successfully. * @stable ICU 2.0 */ GregorianCalendar(TimeZone* zoneToAdopt, UErrorCode& success); /** * Constructs a GregorianCalendar based on the current time in the given time zone * with the default locale. * * @param zone The given timezone. * @param success Indicates the status of GregorianCalendar object construction. * Returns U_ZERO_ERROR if constructed successfully. * @stable ICU 2.0 */ GregorianCalendar(const TimeZone& zone, UErrorCode& success); /** * Constructs a GregorianCalendar based on the current time in the default time zone * with the given locale. * * @param aLocale The given locale. * @param success Indicates the status of GregorianCalendar object construction. * Returns U_ZERO_ERROR if constructed successfully. * @stable ICU 2.0 */ GregorianCalendar(const Locale& aLocale, UErrorCode& success); /** * Constructs a GregorianCalendar based on the current time in the given time zone * with the given locale. Clients are no longer responsible for deleting the given * time zone object after it's adopted. * * @param zoneToAdopt The given timezone. * @param aLocale The given locale. * @param success Indicates the status of GregorianCalendar object construction. * Returns U_ZERO_ERROR if constructed successfully. * @stable ICU 2.0 */ GregorianCalendar(TimeZone* zoneToAdopt, const Locale& aLocale, UErrorCode& success); /** * Constructs a GregorianCalendar based on the current time in the given time zone * with the given locale. * * @param zone The given timezone. * @param aLocale The given locale. * @param success Indicates the status of GregorianCalendar object construction. * Returns U_ZERO_ERROR if constructed successfully. * @stable ICU 2.0 */ GregorianCalendar(const TimeZone& zone, const Locale& aLocale, UErrorCode& success); /** * Constructs a GregorianCalendar with the given AD date set in the default time * zone with the default locale. * * @param year The value used to set the YEAR time field in the calendar. * @param month The value used to set the MONTH time field in the calendar. Month * value is 0-based. e.g., 0 for January. * @param date The value used to set the DATE time field in the calendar. * @param success Indicates the status of GregorianCalendar object construction. * Returns U_ZERO_ERROR if constructed successfully. * @stable ICU 2.0 */ GregorianCalendar(int32_t year, int32_t month, int32_t date, UErrorCode& success); /** * Constructs a GregorianCalendar with the given AD date and time set for the * default time zone with the default locale. * * @param year The value used to set the YEAR time field in the calendar. * @param month The value used to set the MONTH time field in the calendar. Month * value is 0-based. e.g., 0 for January. * @param date The value used to set the DATE time field in the calendar. * @param hour The value used to set the HOUR_OF_DAY time field in the calendar. * @param minute The value used to set the MINUTE time field in the calendar. * @param success Indicates the status of GregorianCalendar object construction. * Returns U_ZERO_ERROR if constructed successfully. * @stable ICU 2.0 */ GregorianCalendar(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, UErrorCode& success); /** * Constructs a GregorianCalendar with the given AD date and time set for the * default time zone with the default locale. * * @param year The value used to set the YEAR time field in the calendar. * @param month The value used to set the MONTH time field in the calendar. Month * value is 0-based. e.g., 0 for January. * @param date The value used to set the DATE time field in the calendar. * @param hour The value used to set the HOUR_OF_DAY time field in the calendar. * @param minute The value used to set the MINUTE time field in the calendar. * @param second The value used to set the SECOND time field in the calendar. * @param success Indicates the status of GregorianCalendar object construction. * Returns U_ZERO_ERROR if constructed successfully. * @stable ICU 2.0 */ GregorianCalendar(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second, UErrorCode& success); /** * Destructor * @stable ICU 2.0 */ virtual ~GregorianCalendar(); /** * Copy constructor * @param source the object to be copied. * @stable ICU 2.0 */ GregorianCalendar(const GregorianCalendar& source); /** * Default assignment operator * @param right the object to be copied. * @stable ICU 2.0 */ GregorianCalendar& operator=(const GregorianCalendar& right); /** * Create and return a polymorphic copy of this calendar. * @return return a polymorphic copy of this calendar. * @stable ICU 2.0 */ virtual Calendar* clone(void) const; /** * Sets the GregorianCalendar change date. This is the point when the switch from * Julian dates to Gregorian dates occurred. Default is 00:00:00 local time, October * 15, 1582. Previous to this time and date will be Julian dates. * * @param date The given Gregorian cutover date. * @param success Output param set to success/failure code on exit. * @stable ICU 2.0 */ void setGregorianChange(UDate date, UErrorCode& success); /** * Gets the Gregorian Calendar change date. This is the point when the switch from * Julian dates to Gregorian dates occurred. Default is 00:00:00 local time, October * 15, 1582. Previous to this time and date will be Julian dates. * * @return The Gregorian cutover time for this calendar. * @stable ICU 2.0 */ UDate getGregorianChange(void) const; /** * Return true if the given year is a leap year. Determination of whether a year is * a leap year is actually very complicated. We do something crude and mostly * correct here, but for a real determination you need a lot of contextual * information. For example, in Sweden, the change from Julian to Gregorian happened * in a complex way resulting in missed leap years and double leap years between * 1700 and 1753. Another example is that after the start of the Julian calendar in * 45 B.C., the leap years did not regularize until 8 A.D. This method ignores these * quirks, and pays attention only to the Julian onset date and the Gregorian * cutover (which can be changed). * * @param year The given year. * @return True if the given year is a leap year; false otherwise. * @stable ICU 2.0 */ UBool isLeapYear(int32_t year) const; /** * Returns TRUE if the given Calendar object is equivalent to this * one. Calendar override. * * @param other the Calendar to be compared with this Calendar * @stable ICU 2.4 */ virtual UBool isEquivalentTo(const Calendar& other) const; /** * (Overrides Calendar) Rolls up or down by the given amount in the specified field. * For more information, see the documentation for Calendar::roll(). * * @param field The time field. * @param amount Indicates amount to roll. * @param status Output param set to success/failure code on exit. If any value * previously set in the time field is invalid, this will be set to * an error status. * @deprecated ICU 2.6. Use roll(UCalendarDateFields field, int32_t amount, UErrorCode& status) instead. */ virtual void roll(EDateFields field, int32_t amount, UErrorCode& status); /** * (Overrides Calendar) Rolls up or down by the given amount in the specified field. * For more information, see the documentation for Calendar::roll(). * * @param field The time field. * @param amount Indicates amount to roll. * @param status Output param set to success/failure code on exit. If any value * previously set in the time field is invalid, this will be set to * an error status. * @stable ICU 2.6. */ virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status); #ifndef U_HIDE_DEPRECATED_API /** * Return the minimum value that this field could have, given the current date. * For the Gregorian calendar, this is the same as getMinimum() and getGreatestMinimum(). * @param field the time field. * @return the minimum value that this field could have, given the current date. * @deprecated ICU 2.6. Use getActualMinimum(UCalendarDateFields field) instead. */ int32_t getActualMinimum(EDateFields field) const; /** * Return the minimum value that this field could have, given the current date. * For the Gregorian calendar, this is the same as getMinimum() and getGreatestMinimum(). * @param field the time field. * @param status * @return the minimum value that this field could have, given the current date. * @deprecated ICU 2.6. Use getActualMinimum(UCalendarDateFields field) instead. (Added to ICU 3.0 for signature consistency) */ int32_t getActualMinimum(EDateFields field, UErrorCode& status) const; #endif /* U_HIDE_DEPRECATED_API */ /** * Return the minimum value that this field could have, given the current date. * For the Gregorian calendar, this is the same as getMinimum() and getGreatestMinimum(). * @param field the time field. * @param status error result. * @return the minimum value that this field could have, given the current date. * @stable ICU 3.0 */ int32_t getActualMinimum(UCalendarDateFields field, UErrorCode &status) const; #ifndef U_HIDE_DEPRECATED_API /** * Return the maximum value that this field could have, given the current date. * For example, with the date "Feb 3, 1997" and the DAY_OF_MONTH field, the actual * maximum would be 28; for "Feb 3, 1996" it s 29. Similarly for a Hebrew calendar, * for some years the actual maximum for MONTH is 12, and for others 13. * @param field the time field. * @return the maximum value that this field could have, given the current date. * @deprecated ICU 2.6. Use getActualMaximum(UCalendarDateFields field) instead. */ int32_t getActualMaximum(EDateFields field) const; #endif /* U_HIDE_DEPRECATED_API */ /** * Return the maximum value that this field could have, given the current date. * For example, with the date "Feb 3, 1997" and the DAY_OF_MONTH field, the actual * maximum would be 28; for "Feb 3, 1996" it s 29. Similarly for a Hebrew calendar, * for some years the actual maximum for MONTH is 12, and for others 13. * @param field the time field. * @param status returns any errors that may result from this function call. * @return the maximum value that this field could have, given the current date. * @stable ICU 2.6 */ virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const; /** * (Overrides Calendar) Return true if the current date for this Calendar is in * Daylight Savings Time. Recognizes DST_OFFSET, if it is set. * * @param status Fill-in parameter which receives the status of this operation. * @return True if the current date for this Calendar is in Daylight Savings Time, * false, otherwise. * @stable ICU 2.0 */ virtual UBool inDaylightTime(UErrorCode& status) const; public: /** * Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual * override. This method is to implement a simple version of RTTI, since not all C++ * compilers support genuine RTTI. Polymorphic operator==() and clone() methods call * this method. * * @return The class ID for this object. All objects of a given class have the * same class ID. Objects of other classes have different class IDs. * @stable ICU 2.0 */ virtual UClassID getDynamicClassID(void) const; /** * Return the class ID for this class. This is useful only for comparing to a return * value from getDynamicClassID(). For example: * * Base* polymorphic_pointer = createPolymorphicObject(); * if (polymorphic_pointer->getDynamicClassID() == * Derived::getStaticClassID()) ... * * @return The class ID for all objects of this class. * @stable ICU 2.0 */ static UClassID U_EXPORT2 getStaticClassID(void); /** * Returns the calendar type name string for this Calendar object. * The returned string is the legacy ICU calendar attribute value, * for example, "gregorian" or "japanese". * * For more details see the Calendar::getType() documentation. * * @return legacy calendar type name string * @stable ICU 49 */ virtual const char * getType() const; private: GregorianCalendar(); // default constructor not implemented protected: /** * Return the ERA. We need a special method for this because the * default ERA is AD, but a zero (unset) ERA is BC. * @return the ERA. * @internal */ virtual int32_t internalGetEra() const; /** * Return the Julian day number of day before the first day of the * given month in the given extended year. Subclasses should override * this method to implement their calendar system. * @param eyear the extended year * @param month the zero-based month, or 0 if useMonth is false * @param useMonth if false, compute the day before the first day of * the given year, otherwise, compute the day before the first day of * the given month * @return the Julian day number of the day before the first * day of the given month and year * @internal */ virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth) const; /** * Subclasses may override this. This method calls * handleGetMonthLength() to obtain the calendar-specific month * length. * @param bestField which field to use to calculate the date * @return julian day specified by calendar fields. * @internal */ virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField) ; /** * Return the number of days in the given month of the given extended * year of this calendar system. Subclasses should override this * method if they can provide a more correct or more efficient * implementation than the default implementation in Calendar. * @internal */ virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const; /** * Return the number of days in the given extended year of this * calendar system. Subclasses should override this method if they can * provide a more correct or more efficient implementation than the * default implementation in Calendar. * @stable ICU 2.0 */ virtual int32_t handleGetYearLength(int32_t eyear) const; /** * return the length of the given month. * @param month the given month. * @return the length of the given month. * @internal */ virtual int32_t monthLength(int32_t month) const; /** * return the length of the month according to the given year. * @param month the given month. * @param year the given year. * @return the length of the month * @internal */ virtual int32_t monthLength(int32_t month, int32_t year) const; #ifndef U_HIDE_INTERNAL_API /** * return the length of the given year. * @param year the given year. * @return the length of the given year. * @internal */ int32_t yearLength(int32_t year) const; /** * return the length of the year field. * @return the length of the year field * @internal */ int32_t yearLength(void) const; /** * After adjustments such as add(MONTH), add(YEAR), we don't want the * month to jump around. E.g., we don't want Jan 31 + 1 month to go to Mar * 3, we want it to go to Feb 28. Adjustments which might run into this * problem call this method to retain the proper month. * @internal */ void pinDayOfMonth(void); #endif /* U_HIDE_INTERNAL_API */ /** * Return the day number with respect to the epoch. January 1, 1970 (Gregorian) * is day zero. * @param status Fill-in parameter which receives the status of this operation. * @return the day number with respect to the epoch. * @internal */ virtual UDate getEpochDay(UErrorCode& status); /** * Subclass API for defining limits of different types. * Subclasses must implement this method to return limits for the * following fields: * * <pre>UCAL_ERA * UCAL_YEAR * UCAL_MONTH * UCAL_WEEK_OF_YEAR * UCAL_WEEK_OF_MONTH * UCAL_DATE (DAY_OF_MONTH on Java) * UCAL_DAY_OF_YEAR * UCAL_DAY_OF_WEEK_IN_MONTH * UCAL_YEAR_WOY * UCAL_EXTENDED_YEAR</pre> * * @param field one of the above field numbers * @param limitType one of <code>MINIMUM</code>, <code>GREATEST_MINIMUM</code>, * <code>LEAST_MAXIMUM</code>, or <code>MAXIMUM</code> * @internal */ virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const; /** * Return the extended year defined by the current fields. This will * use the UCAL_EXTENDED_YEAR field or the UCAL_YEAR and supra-year fields (such * as UCAL_ERA) specific to the calendar system, depending on which set of * fields is newer. * @return the extended year * @internal */ virtual int32_t handleGetExtendedYear(); /** * Subclasses may override this to convert from week fields * (YEAR_WOY and WEEK_OF_YEAR) to an extended year in the case * where YEAR, EXTENDED_YEAR are not set. * The Gregorian implementation assumes a yearWoy in gregorian format, according to the current era. * @return the extended year, UCAL_EXTENDED_YEAR * @internal */ virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy); /** * Subclasses may override this method to compute several fields * specific to each calendar system. These are: * * <ul><li>ERA * <li>YEAR * <li>MONTH * <li>DAY_OF_MONTH * <li>DAY_OF_YEAR * <li>EXTENDED_YEAR</ul> * * <p>The GregorianCalendar implementation implements * a calendar with the specified Julian/Gregorian cutover date. * @internal */ virtual void handleComputeFields(int32_t julianDay, UErrorCode &status); private: /** * Compute the julian day number of the given year. * @param isGregorian if true, using Gregorian calendar, otherwise using Julian calendar * @param year the given year. * @param isLeap true if the year is a leap year. * @return */ static double computeJulianDayOfYear(UBool isGregorian, int32_t year, UBool& isLeap); /** * Validates the values of the set time fields. True if they're all valid. * @return True if the set time fields are all valid. */ UBool validateFields(void) const; /** * Validates the value of the given time field. True if it's valid. */ UBool boundsCheck(int32_t value, UCalendarDateFields field) const; /** * Return the pseudo-time-stamp for two fields, given their * individual pseudo-time-stamps. If either of the fields * is unset, then the aggregate is unset. Otherwise, the * aggregate is the later of the two stamps. * @param stamp_a One given field. * @param stamp_b Another given field. * @return the pseudo-time-stamp for two fields */ int32_t aggregateStamp(int32_t stamp_a, int32_t stamp_b); /** * The point at which the Gregorian calendar rules are used, measured in * milliseconds from the standard epoch. Default is October 15, 1582 * (Gregorian) 00:00:00 UTC, that is, October 4, 1582 (Julian) is followed * by October 15, 1582 (Gregorian). This corresponds to Julian day number * 2299161. This is measured from the standard epoch, not in Julian Days. */ UDate fGregorianCutover; /** * Julian day number of the Gregorian cutover */ int32_t fCutoverJulianDay; /** * Midnight, local time (using this Calendar's TimeZone) at or before the * gregorianCutover. This is a pure date value with no time of day or * timezone component. */ UDate fNormalizedGregorianCutover;// = gregorianCutover; /** * The year of the gregorianCutover, with 0 representing * 1 BC, -1 representing 2 BC, etc. */ int32_t fGregorianCutoverYear;// = 1582; /** * The year of the gregorianCutover, with 0 representing * 1 BC, -1 representing 2 BC, etc. */ int32_t fGregorianCutoverJulianDay;// = 2299161; /** * Converts time as milliseconds to Julian date. The Julian date used here is not a * true Julian date, since it is measured from midnight, not noon. * * @param millis The given milliseconds. * @return The Julian date number. */ static double millisToJulianDay(UDate millis); /** * Converts Julian date to time as milliseconds. The Julian date used here is not a * true Julian date, since it is measured from midnight, not noon. * * @param julian The given Julian date number. * @return Time as milliseconds. */ static UDate julianDayToMillis(double julian); /** * Used by handleComputeJulianDay() and handleComputeMonthStart(). * Temporary field indicating whether the calendar is currently Gregorian as opposed to Julian. */ UBool fIsGregorian; /** * Used by handleComputeJulianDay() and handleComputeMonthStart(). * Temporary field indicating that the sense of the gregorian cutover should be inverted * to handle certain calculations on and around the cutover date. */ UBool fInvertGregorian; public: // internal implementation /** * @return TRUE if this calendar has the notion of a default century * @internal */ virtual UBool haveDefaultCentury() const; /** * @return the start of the default century * @internal */ virtual UDate defaultCenturyStart() const; /** * @return the beginning year of the default century * @internal */ virtual int32_t defaultCenturyStartYear() const; }; U_NAMESPACE_END #endif /* #if !UCONFIG_NO_FORMATTING */ #endif // _GREGOCAL //eof
Save
cmd:
run