ICU-887 add new ucal_ time zone API
X-SVN-Rev: 11249
This commit is contained in:
parent
efda501285
commit
03c212daf4
@ -13,6 +13,7 @@
|
||||
#include "unicode/uloc.h"
|
||||
#include "unicode/calendar.h"
|
||||
#include "unicode/timezone.h"
|
||||
#include "unicode/simpletz.h"
|
||||
#include "unicode/ustring.h"
|
||||
#include "unicode/strenum.h"
|
||||
#include "cmemory.h"
|
||||
@ -20,9 +21,67 @@
|
||||
|
||||
U_NAMESPACE_USE
|
||||
|
||||
static TimeZone*
|
||||
_createTimeZone(const UChar* zoneID, int32_t len, UErrorCode* ec) {
|
||||
TimeZone* zone = NULL;
|
||||
if (ec!=NULL && U_SUCCESS(*ec)) {
|
||||
// Note that if zoneID is invalid, we get back GMT. This odd
|
||||
// behavior is by design and goes back to the JDK. The only
|
||||
// failure we will see is a memory allocation failure.
|
||||
int32_t l = (len<0 ? u_strlen(zoneID) : len);
|
||||
zone = TimeZone::createTimeZone(UnicodeString(zoneID, l));
|
||||
if (zone == NULL) {
|
||||
*ec = U_MEMORY_ALLOCATION_ERROR;
|
||||
}
|
||||
}
|
||||
return zone;
|
||||
}
|
||||
|
||||
U_CAPI UEnumeration* U_EXPORT2
|
||||
ucal_openTimeZoneEnumeration(int32_t rawOffset, UErrorCode* ec) {
|
||||
return uenum_openStringEnumeration(TimeZone::createEnumeration(rawOffset), ec);
|
||||
ucal_openTimeZones(UErrorCode* ec) {
|
||||
return uenum_openStringEnumeration(TimeZone::createEnumeration(), ec);
|
||||
}
|
||||
|
||||
U_CAPI UEnumeration* U_EXPORT2
|
||||
ucal_openCountryTimeZones(const char* country, UErrorCode* ec) {
|
||||
return uenum_openStringEnumeration(TimeZone::createEnumeration(country), ec);
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {
|
||||
int32_t len = 0;
|
||||
if (ec!=NULL && U_SUCCESS(*ec)) {
|
||||
TimeZone* zone = TimeZone::createDefault();
|
||||
if (zone == NULL) {
|
||||
*ec = U_MEMORY_ALLOCATION_ERROR;
|
||||
} else {
|
||||
UnicodeString id;
|
||||
zone->getID(id);
|
||||
delete zone;
|
||||
len = id.extract(result, resultCapacity, *ec);
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec) {
|
||||
TimeZone* zone = _createTimeZone(zoneID, -1, ec);
|
||||
if (zone != NULL) {
|
||||
TimeZone::adoptDefault(zone);
|
||||
}
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec) {
|
||||
int32_t result = 0;
|
||||
TimeZone* zone = _createTimeZone(zoneID, -1, ec);
|
||||
if (U_SUCCESS(*ec) &&
|
||||
zone->getDynamicClassID() == SimpleTimeZone::getStaticClassID()) {
|
||||
result = ((SimpleTimeZone*) zone)->getDSTSavings();
|
||||
}
|
||||
delete zone;
|
||||
return result;
|
||||
}
|
||||
|
||||
U_CAPI const UChar* U_EXPORT2
|
||||
@ -89,18 +148,11 @@ ucal_open( const UChar* zoneID,
|
||||
|
||||
if(U_FAILURE(*status)) return 0;
|
||||
|
||||
TimeZone *zone = 0;
|
||||
if(zoneID == 0) {
|
||||
zone = TimeZone::createDefault();
|
||||
}
|
||||
else {
|
||||
int32_t length = (len == -1 ? u_strlen(zoneID) : len);
|
||||
TimeZone* zone = (zoneID==NULL) ? TimeZone::createDefault()
|
||||
: _createTimeZone(zoneID, len, status);
|
||||
|
||||
zone = TimeZone::createTimeZone(UnicodeString(zoneID, length));
|
||||
}
|
||||
if(zone == 0) {
|
||||
*status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return 0;
|
||||
if (U_FAILURE(*status)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (UCalendar*)Calendar::createInstance(zone, Locale(locale), *status);
|
||||
@ -123,21 +175,12 @@ ucal_setTimeZone( UCalendar* cal,
|
||||
if(U_FAILURE(*status))
|
||||
return;
|
||||
|
||||
TimeZone *zone;
|
||||
if(zoneID == NULL) {
|
||||
zone = TimeZone::createDefault();
|
||||
}
|
||||
else {
|
||||
int32_t length = (len == -1 ? u_strlen(zoneID) : len);
|
||||
zone = TimeZone::createTimeZone(UnicodeString((UChar*)zoneID,
|
||||
length, length));
|
||||
}
|
||||
if(zone == 0) {
|
||||
*status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return;
|
||||
}
|
||||
TimeZone* zone = (zoneID==NULL) ? TimeZone::createDefault()
|
||||
: _createTimeZone(zoneID, len, status);
|
||||
|
||||
if (zone != NULL) {
|
||||
((Calendar*)cal)->adoptTimeZone(zone);
|
||||
}
|
||||
}
|
||||
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
|
@ -280,98 +280,142 @@ enum UCalendarAMPMs {
|
||||
typedef enum UCalendarAMPMs UCalendarAMPMs;
|
||||
|
||||
/**
|
||||
* Create a UEnumeration over the recognized time zone IDs with the
|
||||
* given raw offset.
|
||||
* @param rawOffset the desired GMT offset, not including the effects
|
||||
* of daylight savings time
|
||||
* Create an enumeration over all time zones.
|
||||
*
|
||||
* @param ec input/output error code
|
||||
*
|
||||
* @return an enumeration object that the caller must dispose of using
|
||||
* uenum_close()
|
||||
* @draft ICU 2.4
|
||||
* uenum_close(), or NULL upon failure. In case of failure *ec will
|
||||
* indicate the error.
|
||||
*
|
||||
* @draft ICU 2.6
|
||||
*/
|
||||
U_CAPI UEnumeration* U_EXPORT2
|
||||
ucal_openTimeZoneEnumeration(int32_t rawOffset,
|
||||
UErrorCode* status);
|
||||
ucal_openTimeZones(UErrorCode* ec);
|
||||
|
||||
/**
|
||||
* Get an available TimeZone ID.
|
||||
* A Timezone ID is a string of the form "America/Los Angeles".
|
||||
* @param rawOffset The desired GMT offset
|
||||
* @param index The index of the desired TimeZone.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return The requested TimeZone ID, or 0 if not found
|
||||
* @see ucal_countAvailableTZIDs
|
||||
* @obsolete ICU 2.8. Use ucal_openTimeZoneEnumeration instead since this API will be removed in that release.
|
||||
*/
|
||||
U_CAPI const UChar* U_EXPORT2
|
||||
ucal_getAvailableTZIDs( int32_t rawOffset,
|
||||
int32_t index,
|
||||
UErrorCode* status);
|
||||
* Create an enumeration over all time zones associated with the given
|
||||
* country. Some zones are affiliated with no country (e.g., "UTC");
|
||||
* these may also be retrieved, as a group.
|
||||
*
|
||||
* @param country the ISO 3166 two-letter country code, or NULL to
|
||||
* retrieve zones not affiliated with any country
|
||||
*
|
||||
* @param ec input/output error code
|
||||
*
|
||||
* @return an enumeration object that the caller must dispose of using
|
||||
* uenum_close(), or NULL upon failure. In case of failure *ec will
|
||||
* indicate the error.
|
||||
*
|
||||
* @draft ICU 2.6
|
||||
*/
|
||||
U_CAPI UEnumeration* U_EXPORT2
|
||||
ucal_openCountryTimeZones(const char* country, UErrorCode* ec);
|
||||
|
||||
/**
|
||||
* Determine how many TimeZones exist with a certain offset.
|
||||
* This function is most useful as determining the loop ending condition for
|
||||
* calls to \Ref{ucal_getAvailableTZIDs}.
|
||||
* @param rawOffset The desired GMT offset.
|
||||
* @return The number of TimeZones with rawOffset.
|
||||
* @see ucal_getAvailableTZIDs
|
||||
* @obsolete ICU 2.8. Use ucal_openTimeZoneEnumeration instead since this API will be removed in that release.
|
||||
*/
|
||||
* Return the default time zone. The default is determined initially
|
||||
* by querying the host operating system. It may be changed with
|
||||
* ucal_setDefaultTimeZone() or with the C++ TimeZone API.
|
||||
*
|
||||
* @param result a buffer to receive the result, or NULL
|
||||
*
|
||||
* @param resultLength the length of the result buffer
|
||||
*
|
||||
* @param ec input/output error code
|
||||
*
|
||||
* @return the result string length, not including the terminating
|
||||
* null
|
||||
*
|
||||
* @draft ICU 2.6
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_countAvailableTZIDs(int32_t rawOffset);
|
||||
ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec);
|
||||
|
||||
/**
|
||||
* Get the current date and time.
|
||||
* The value returned is represented as milliseconds from the epoch.
|
||||
* @return The current date and time.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Set the default time zone.
|
||||
*
|
||||
* @param zoneID null-terminated time zone ID
|
||||
*
|
||||
* @param ec input/output error code
|
||||
*
|
||||
* @draft ICU 2.6
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec);
|
||||
|
||||
/**
|
||||
* Return the amount of time in milliseconds that the clock is
|
||||
* advanced during daylight savings time for the given time zone, or
|
||||
* zero if the time zone does not observe daylight savings time.
|
||||
*
|
||||
* @param zoneID null-terminated time zone ID
|
||||
*
|
||||
* @param ec input/output error code
|
||||
*
|
||||
* @return the number of milliseconds the time is advanced with
|
||||
* respect to standard time when the daylight savings rules are in
|
||||
* effect. This is always a non-negative number, most commonly either
|
||||
* 3,600,000 (one hour) or zero.
|
||||
*
|
||||
* @draft ICU 2.6
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec);
|
||||
|
||||
/**
|
||||
* Get the current date and time.
|
||||
* The value returned is represented as milliseconds from the epoch.
|
||||
* @return The current date and time.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI UDate U_EXPORT2
|
||||
ucal_getNow(void);
|
||||
|
||||
/**
|
||||
* Open a UCalendar.
|
||||
* A UCalendar may be used to convert a millisecond value to a year,
|
||||
* month, and day.
|
||||
* @param zoneID The desired TimeZone ID. If 0, use the default time zone.
|
||||
* @param len The length of zoneID, or -1 if null-terminated.
|
||||
* @param locale The desired locale
|
||||
* @param type The type of UCalendar to open.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return A pointer to a UCalendar, or 0 if an error occurred.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Open a UCalendar.
|
||||
* A UCalendar may be used to convert a millisecond value to a year,
|
||||
* month, and day.
|
||||
* @param zoneID The desired TimeZone ID. If 0, use the default time zone.
|
||||
* @param len The length of zoneID, or -1 if null-terminated.
|
||||
* @param locale The desired locale
|
||||
* @param type The type of UCalendar to open.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return A pointer to a UCalendar, or 0 if an error occurred.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI UCalendar* U_EXPORT2
|
||||
ucal_open( const UChar* zoneID,
|
||||
ucal_open(const UChar* zoneID,
|
||||
int32_t len,
|
||||
const char* locale,
|
||||
UCalendarType type,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Close a UCalendar.
|
||||
* Once closed, a UCalendar may no longer be used.
|
||||
* @param cal The UCalendar to close.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Close a UCalendar.
|
||||
* Once closed, a UCalendar may no longer be used.
|
||||
* @param cal The UCalendar to close.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_close(UCalendar *cal);
|
||||
|
||||
/**
|
||||
* Set the TimeZone used by a UCalendar.
|
||||
* A UCalendar uses a timezone for converting from Greenwich time to local time.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param zoneID The desired TimeZone ID. If 0, use the default time zone.
|
||||
* @param len The length of zoneID, or -1 if null-terminated.
|
||||
* @param status A pointer to an UErrorCode to receive any errors.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Set the TimeZone used by a UCalendar.
|
||||
* A UCalendar uses a timezone for converting from Greenwich time to local time.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param zoneID The desired TimeZone ID. If 0, use the default time zone.
|
||||
* @param len The length of zoneID, or -1 if null-terminated.
|
||||
* @param status A pointer to an UErrorCode to receive any errors.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_setTimeZone( UCalendar* cal,
|
||||
ucal_setTimeZone(UCalendar* cal,
|
||||
const UChar* zoneID,
|
||||
int32_t len,
|
||||
UErrorCode *status);
|
||||
UErrorCode* status);
|
||||
|
||||
/** Possible formats for a UCalendar's display name
|
||||
/**
|
||||
* Possible formats for a UCalendar's display name
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
enum UCalendarDisplayNameType {
|
||||
@ -389,39 +433,40 @@ enum UCalendarDisplayNameType {
|
||||
typedef enum UCalendarDisplayNameType UCalendarDisplayNameType;
|
||||
|
||||
/**
|
||||
* Get the display name for a UCalendar's TimeZone.
|
||||
* A display name is suitable for presentation to a user.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param type The desired display name format; one of UCAL_STANDARD, UCAL_SHORT_STANDARD,
|
||||
* UCAL_DST, UCAL_SHORT_DST
|
||||
* @param locale The desired locale for the display name.
|
||||
* @param result A pointer to a buffer to receive the formatted number.
|
||||
* @param resultLength The maximum size of result.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return The total buffer size needed; if greater than resultLength, the output was truncated.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Get the display name for a UCalendar's TimeZone.
|
||||
* A display name is suitable for presentation to a user.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param type The desired display name format; one of UCAL_STANDARD, UCAL_SHORT_STANDARD,
|
||||
* UCAL_DST, UCAL_SHORT_DST
|
||||
* @param locale The desired locale for the display name.
|
||||
* @param result A pointer to a buffer to receive the formatted number.
|
||||
* @param resultLength The maximum size of result.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return The total buffer size needed; if greater than resultLength, the output was truncated.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_getTimeZoneDisplayName( const UCalendar* cal,
|
||||
ucal_getTimeZoneDisplayName(const UCalendar* cal,
|
||||
UCalendarDisplayNameType type,
|
||||
const char *locale,
|
||||
const char* locale,
|
||||
UChar* result,
|
||||
int32_t resultLength,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Determine if a UCalendar is currently in daylight savings time.
|
||||
* Daylight savings time is not used in all parts of the world.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return TRUE if cal is currently in daylight savings time, FALSE otherwise
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Determine if a UCalendar is currently in daylight savings time.
|
||||
* Daylight savings time is not used in all parts of the world.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return TRUE if cal is currently in daylight savings time, FALSE otherwise
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
ucal_inDaylightTime( const UCalendar* cal,
|
||||
ucal_inDaylightTime(const UCalendar* cal,
|
||||
UErrorCode* status );
|
||||
|
||||
/** Types of UCalendar attributes
|
||||
/**
|
||||
* Types of UCalendar attributes
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
enum UCalendarAttribute {
|
||||
@ -437,137 +482,137 @@ enum UCalendarAttribute {
|
||||
typedef enum UCalendarAttribute UCalendarAttribute;
|
||||
|
||||
/**
|
||||
* Get a numeric attribute associated with a UCalendar.
|
||||
* Numeric attributes include the first day of the week, or the minimal numbers
|
||||
* of days in the first week of the month.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param attr The desired attribute; one of UCAL_LENIENT, UCAL_FIRST_DAY_OF_WEEK,
|
||||
* or UCAL_MINIMAL_DAYS_IN_FIRST_WEEK
|
||||
* @return The value of attr.
|
||||
* @see ucal_setAttribute
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Get a numeric attribute associated with a UCalendar.
|
||||
* Numeric attributes include the first day of the week, or the minimal numbers
|
||||
* of days in the first week of the month.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param attr The desired attribute; one of UCAL_LENIENT, UCAL_FIRST_DAY_OF_WEEK,
|
||||
* or UCAL_MINIMAL_DAYS_IN_FIRST_WEEK
|
||||
* @return The value of attr.
|
||||
* @see ucal_setAttribute
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_getAttribute( const UCalendar* cal,
|
||||
ucal_getAttribute(const UCalendar* cal,
|
||||
UCalendarAttribute attr);
|
||||
|
||||
/**
|
||||
* Set a numeric attribute associated with a UCalendar.
|
||||
* Numeric attributes include the first day of the week, or the minimal numbers
|
||||
* of days in the first week of the month.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param attr The desired attribute; one of UCAL_LENIENT, UCAL_FIRST_DAY_OF_WEEK,
|
||||
* or UCAL_MINIMAL_DAYS_IN_FIRST_WEEK
|
||||
* @param newValue The new value of attr.
|
||||
* @see ucal_getAttribute
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Set a numeric attribute associated with a UCalendar.
|
||||
* Numeric attributes include the first day of the week, or the minimal numbers
|
||||
* of days in the first week of the month.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param attr The desired attribute; one of UCAL_LENIENT, UCAL_FIRST_DAY_OF_WEEK,
|
||||
* or UCAL_MINIMAL_DAYS_IN_FIRST_WEEK
|
||||
* @param newValue The new value of attr.
|
||||
* @see ucal_getAttribute
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_setAttribute( UCalendar* cal,
|
||||
ucal_setAttribute(UCalendar* cal,
|
||||
UCalendarAttribute attr,
|
||||
int32_t newValue);
|
||||
|
||||
/**
|
||||
* Get a locale for which calendars are available.
|
||||
* A UCalendar in a locale returned by this function will contain the correct
|
||||
* day and month names for the locale.
|
||||
* @param index The index of the desired locale.
|
||||
* @return A locale for which calendars are available, or 0 if none.
|
||||
* @see ucal_countAvailable
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Get a locale for which calendars are available.
|
||||
* A UCalendar in a locale returned by this function will contain the correct
|
||||
* day and month names for the locale.
|
||||
* @param index The index of the desired locale.
|
||||
* @return A locale for which calendars are available, or 0 if none.
|
||||
* @see ucal_countAvailable
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI const char* U_EXPORT2
|
||||
ucal_getAvailable(int32_t index);
|
||||
|
||||
/**
|
||||
* Determine how many locales have calendars available.
|
||||
* This function is most useful as determining the loop ending condition for
|
||||
* calls to \Ref{ucal_getAvailable}.
|
||||
* @return The number of locales for which calendars are available.
|
||||
* @see ucal_getAvailable
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Determine how many locales have calendars available.
|
||||
* This function is most useful as determining the loop ending condition for
|
||||
* calls to \Ref{ucal_getAvailable}.
|
||||
* @return The number of locales for which calendars are available.
|
||||
* @see ucal_getAvailable
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_countAvailable(void);
|
||||
|
||||
/**
|
||||
* Get a UCalendar's current time in millis.
|
||||
* The time is represented as milliseconds from the epoch.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return The calendar's current time in millis.
|
||||
* @see ucal_setMillis
|
||||
* @see ucal_setDate
|
||||
* @see ucal_setDateTime
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Get a UCalendar's current time in millis.
|
||||
* The time is represented as milliseconds from the epoch.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return The calendar's current time in millis.
|
||||
* @see ucal_setMillis
|
||||
* @see ucal_setDate
|
||||
* @see ucal_setDateTime
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI UDate U_EXPORT2
|
||||
ucal_getMillis( const UCalendar* cal,
|
||||
ucal_getMillis(const UCalendar* cal,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Set a UCalendar's current time in millis.
|
||||
* The time is represented as milliseconds from the epoch.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param dateTime The desired date and time.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_getMillis
|
||||
* @see ucal_setDate
|
||||
* @see ucal_setDateTime
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Set a UCalendar's current time in millis.
|
||||
* The time is represented as milliseconds from the epoch.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param dateTime The desired date and time.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_getMillis
|
||||
* @see ucal_setDate
|
||||
* @see ucal_setDateTime
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_setMillis( UCalendar* cal,
|
||||
ucal_setMillis(UCalendar* cal,
|
||||
UDate dateTime,
|
||||
UErrorCode* status );
|
||||
|
||||
/**
|
||||
* Set a UCalendar's current date.
|
||||
* The date is represented as a series of 32-bit integers.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param year The desired year.
|
||||
* @param month The desired month; one of UCAL_JANUARY, UCAL_FEBRUARY, UCAL_MARCH, UCAL_APRIL, UCAL_MAY,
|
||||
* UCAL_JUNE, UCAL_JULY, UCAL_AUGUST, UCAL_SEPTEMBER, UCAL_OCTOBER, UCAL_NOVEMBER, UCAL_DECEMBER, UCAL_UNDECIMBER
|
||||
* @param date The desired day of the month.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_getMillis
|
||||
* @see ucal_setMillis
|
||||
* @see ucal_setDateTime
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Set a UCalendar's current date.
|
||||
* The date is represented as a series of 32-bit integers.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param year The desired year.
|
||||
* @param month The desired month; one of UCAL_JANUARY, UCAL_FEBRUARY, UCAL_MARCH, UCAL_APRIL, UCAL_MAY,
|
||||
* UCAL_JUNE, UCAL_JULY, UCAL_AUGUST, UCAL_SEPTEMBER, UCAL_OCTOBER, UCAL_NOVEMBER, UCAL_DECEMBER, UCAL_UNDECIMBER
|
||||
* @param date The desired day of the month.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_getMillis
|
||||
* @see ucal_setMillis
|
||||
* @see ucal_setDateTime
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_setDate( UCalendar* cal,
|
||||
ucal_setDate(UCalendar* cal,
|
||||
int32_t year,
|
||||
int32_t month,
|
||||
int32_t date,
|
||||
UErrorCode *status);
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Set a UCalendar's current date.
|
||||
* The date is represented as a series of 32-bit integers.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param year The desired year.
|
||||
* @param month The desired month; one of UCAL_JANUARY, UCAL_FEBRUARY, UCAL_MARCH, UCAL_APRIL, UCAL_MAY,
|
||||
* UCAL_JUNE, UCAL_JULY, UCAL_AUGUST, UCAL_SEPTEMBER, UCAL_OCTOBER, UCAL_NOVEMBER, UCAL_DECEMBER, UCAL_UNDECIMBER
|
||||
* @param date The desired day of the month.
|
||||
* @param hour The desired hour of day.
|
||||
* @param minute The desired minute.
|
||||
* @param second The desirec second.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_getMillis
|
||||
* @see ucal_setMillis
|
||||
* @see ucal_setDate
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Set a UCalendar's current date.
|
||||
* The date is represented as a series of 32-bit integers.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param year The desired year.
|
||||
* @param month The desired month; one of UCAL_JANUARY, UCAL_FEBRUARY, UCAL_MARCH, UCAL_APRIL, UCAL_MAY,
|
||||
* UCAL_JUNE, UCAL_JULY, UCAL_AUGUST, UCAL_SEPTEMBER, UCAL_OCTOBER, UCAL_NOVEMBER, UCAL_DECEMBER, UCAL_UNDECIMBER
|
||||
* @param date The desired day of the month.
|
||||
* @param hour The desired hour of day.
|
||||
* @param minute The desired minute.
|
||||
* @param second The desirec second.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_getMillis
|
||||
* @see ucal_setMillis
|
||||
* @see ucal_setDate
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_setDateTime( UCalendar* cal,
|
||||
ucal_setDateTime(UCalendar* cal,
|
||||
int32_t year,
|
||||
int32_t month,
|
||||
int32_t date,
|
||||
int32_t hour,
|
||||
int32_t minute,
|
||||
int32_t second,
|
||||
UErrorCode *status);
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Returns TRUE if two UCalendars are equivalent. Equivalent
|
||||
@ -583,139 +628,140 @@ ucal_equivalentTo(const UCalendar* cal1,
|
||||
const UCalendar* cal2);
|
||||
|
||||
/**
|
||||
* Add a specified signed amount to a particular field in a UCalendar.
|
||||
* This can modify more significant fields in the calendar.
|
||||
* @param cal The UCalendar to which to add.
|
||||
* @param field The field to which to add the signed value; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param amount The signed amount to add to field. If the amount causes the value
|
||||
* to exceed to maximum or minimum values for that field, other fields are modified
|
||||
* to preserve the magnitude of the change.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_roll
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Add a specified signed amount to a particular field in a UCalendar.
|
||||
* This can modify more significant fields in the calendar.
|
||||
* @param cal The UCalendar to which to add.
|
||||
* @param field The field to which to add the signed value; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param amount The signed amount to add to field. If the amount causes the value
|
||||
* to exceed to maximum or minimum values for that field, other fields are modified
|
||||
* to preserve the magnitude of the change.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_roll
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_add( UCalendar* cal,
|
||||
ucal_add(UCalendar* cal,
|
||||
UCalendarDateFields field,
|
||||
int32_t amount,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Add a specified signed amount to a particular field in a UCalendar.
|
||||
* This will not modify more significant fields in the calendar.
|
||||
* @param cal The UCalendar to which to add.
|
||||
* @param field The field to which to add the signed value; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param amount The signed amount to add to field. If the amount causes the value
|
||||
* to exceed to maximum or minimum values for that field, the field is pinned to a permissible
|
||||
* value.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_add
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Add a specified signed amount to a particular field in a UCalendar.
|
||||
* This will not modify more significant fields in the calendar.
|
||||
* @param cal The UCalendar to which to add.
|
||||
* @param field The field to which to add the signed value; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param amount The signed amount to add to field. If the amount causes the value
|
||||
* to exceed to maximum or minimum values for that field, the field is pinned to a permissible
|
||||
* value.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @see ucal_add
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_roll( UCalendar* cal,
|
||||
ucal_roll(UCalendar* cal,
|
||||
UCalendarDateFields field,
|
||||
int32_t amount,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Get the current value of a field from a UCalendar.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param field The desired field; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return The value of the desired field.
|
||||
* @see ucal_set
|
||||
* @see ucal_isSet
|
||||
* @see ucal_clearField
|
||||
* @see ucal_clear
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Get the current value of a field from a UCalendar.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param field The desired field; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return The value of the desired field.
|
||||
* @see ucal_set
|
||||
* @see ucal_isSet
|
||||
* @see ucal_clearField
|
||||
* @see ucal_clear
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_get( const UCalendar* cal,
|
||||
ucal_get(const UCalendar* cal,
|
||||
UCalendarDateFields field,
|
||||
UErrorCode* status );
|
||||
|
||||
/**
|
||||
* Set the value of a field in a UCalendar.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param field The field to set; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param value The desired value of field.
|
||||
* @see ucal_get
|
||||
* @see ucal_isSet
|
||||
* @see ucal_clearField
|
||||
* @see ucal_clear
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Set the value of a field in a UCalendar.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar to set.
|
||||
* @param field The field to set; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param value The desired value of field.
|
||||
* @see ucal_get
|
||||
* @see ucal_isSet
|
||||
* @see ucal_clearField
|
||||
* @see ucal_clear
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_set( UCalendar* cal,
|
||||
ucal_set(UCalendar* cal,
|
||||
UCalendarDateFields field,
|
||||
int32_t value);
|
||||
|
||||
/**
|
||||
* Determine if a field in a UCalendar is set.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param field The desired field; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @return TRUE if field is set, FALSE otherwise.
|
||||
* @see ucal_get
|
||||
* @see ucal_set
|
||||
* @see ucal_clearField
|
||||
* @see ucal_clear
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Determine if a field in a UCalendar is set.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param field The desired field; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @return TRUE if field is set, FALSE otherwise.
|
||||
* @see ucal_get
|
||||
* @see ucal_set
|
||||
* @see ucal_clearField
|
||||
* @see ucal_clear
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI UBool U_EXPORT2
|
||||
ucal_isSet( const UCalendar* cal,
|
||||
ucal_isSet(const UCalendar* cal,
|
||||
UCalendarDateFields field);
|
||||
|
||||
/**
|
||||
* Clear a field in a UCalendar.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar containing the field to clear.
|
||||
* @param field The field to clear; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @see ucal_get
|
||||
* @see ucal_set
|
||||
* @see ucal_isSet
|
||||
* @see ucal_clear
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Clear a field in a UCalendar.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar containing the field to clear.
|
||||
* @param field The field to clear; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @see ucal_get
|
||||
* @see ucal_set
|
||||
* @see ucal_isSet
|
||||
* @see ucal_clear
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_clearField( UCalendar* cal,
|
||||
ucal_clearField(UCalendar* cal,
|
||||
UCalendarDateFields field);
|
||||
|
||||
/**
|
||||
* Clear all fields in a UCalendar.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar to clear.
|
||||
* @see ucal_get
|
||||
* @see ucal_set
|
||||
* @see ucal_isSet
|
||||
* @see ucal_clearField
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Clear all fields in a UCalendar.
|
||||
* All fields are represented as 32-bit integers.
|
||||
* @param cal The UCalendar to clear.
|
||||
* @see ucal_get
|
||||
* @see ucal_set
|
||||
* @see ucal_isSet
|
||||
* @see ucal_clearField
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI void U_EXPORT2
|
||||
ucal_clear(UCalendar* calendar);
|
||||
|
||||
/** Possible limit values for a UCalendar
|
||||
/**
|
||||
* Possible limit values for a UCalendar
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
enum UCalendarLimitType {
|
||||
@ -737,24 +783,51 @@ enum UCalendarLimitType {
|
||||
typedef enum UCalendarLimitType UCalendarLimitType;
|
||||
|
||||
/**
|
||||
* Determine a limit for a field in a UCalendar.
|
||||
* A limit is a maximum or minimum value for a field.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param field The desired field; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param type The desired critical point; one of UCAL_MINIMUM, UCAL_MAXIMUM, UCAL_GREATEST_MINIMUM,
|
||||
* UCAL_LEAST_MAXIMUM, UCAL_ACTUAL_MINIMUM, UCAL_ACTUAL_MAXIMUM
|
||||
* @param status A pointer to an UErrorCode to receive any errors.
|
||||
* @return The requested value.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
* Determine a limit for a field in a UCalendar.
|
||||
* A limit is a maximum or minimum value for a field.
|
||||
* @param cal The UCalendar to query.
|
||||
* @param field The desired field; one of UCAL_ERA, UCAL_YEAR, UCAL_MONTH,
|
||||
* UCAL_WEEK_OF_YEAR, UCAL_WEEK_OF_MONTH, UCAL_DATE, UCAL_DAY_OF_YEAR, UCAL_DAY_OF_WEEK,
|
||||
* UCAL_DAY_OF_WEEK_IN_MONTH, UCAL_AM_PM, UCAL_HOUR, UCAL_HOUR_OF_DAY, UCAL_MINUTE, UCAL_SECOND,
|
||||
* UCAL_MILLISECOND, UCAL_ZONE_OFFSET, UCAL_DST_OFFSET.
|
||||
* @param type The desired critical point; one of UCAL_MINIMUM, UCAL_MAXIMUM, UCAL_GREATEST_MINIMUM,
|
||||
* UCAL_LEAST_MAXIMUM, UCAL_ACTUAL_MINIMUM, UCAL_ACTUAL_MAXIMUM
|
||||
* @param status A pointer to an UErrorCode to receive any errors.
|
||||
* @return The requested value.
|
||||
* @stable ICU 2.0
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_getLimit( const UCalendar* cal,
|
||||
ucal_getLimit(const UCalendar* cal,
|
||||
UCalendarDateFields field,
|
||||
UCalendarLimitType type,
|
||||
UErrorCode *status);
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Get an available TimeZone ID.
|
||||
* A Timezone ID is a string of the form "America/Los Angeles".
|
||||
* @param rawOffset The desired GMT offset
|
||||
* @param index The index of the desired TimeZone.
|
||||
* @param status A pointer to an UErrorCode to receive any errors
|
||||
* @return The requested TimeZone ID, or 0 if not found
|
||||
* @see ucal_countAvailableTZIDs
|
||||
* @obsolete ICU 2.8. Use ucal_openTimeZoneEnumeration instead since this API will be removed in that release.
|
||||
*/
|
||||
U_CAPI const UChar* U_EXPORT2
|
||||
ucal_getAvailableTZIDs(int32_t rawOffset,
|
||||
int32_t index,
|
||||
UErrorCode* status);
|
||||
|
||||
/**
|
||||
* Determine how many TimeZones exist with a certain offset.
|
||||
* This function is most useful as determining the loop ending condition for
|
||||
* calls to \Ref{ucal_getAvailableTZIDs}.
|
||||
* @param rawOffset The desired GMT offset.
|
||||
* @return The number of TimeZones with rawOffset.
|
||||
* @see ucal_getAvailableTZIDs
|
||||
* @obsolete ICU 2.8. Use ucal_openTimeZoneEnumeration instead since this API will be removed in that release.
|
||||
*/
|
||||
U_CAPI int32_t U_EXPORT2
|
||||
ucal_countAvailableTZIDs(int32_t rawOffset);
|
||||
|
||||
#endif /* #if !UCONFIG_NO_FORMATTING */
|
||||
|
||||
|
@ -45,11 +45,16 @@ void addCalTest(TestNode** root)
|
||||
/* "GMT" */
|
||||
static const UChar fgGMTID [] = { 0x0047, 0x004d, 0x0054, 0x0000 };
|
||||
|
||||
/* "PST" */
|
||||
static const UChar PST[] = {0x50, 0x53, 0x54, 0x00}; /* "PST" */
|
||||
|
||||
static const UChar EUROPE_PARIS[] = {0x45, 0x75, 0x72, 0x6F, 0x70, 0x65, 0x2F, 0x50, 0x61, 0x72, 0x69, 0x73, 0x00}; /* "Europe/Paris" */
|
||||
|
||||
static void TestCalendar()
|
||||
{
|
||||
UCalendar *caldef = 0, *caldef2 = 0, *calfr = 0, *calit = 0;
|
||||
UEnumeration* uenum = NULL;
|
||||
int32_t count, count2, offset,i;
|
||||
int32_t count, count2, offset,i,j;
|
||||
UChar *tzID = 0;
|
||||
UChar *tzdname = 0;
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
@ -58,6 +63,7 @@ static void TestCalendar()
|
||||
UChar *result = 0;
|
||||
int32_t resultlength, resultlengthneeded;
|
||||
char tempMsgBuf[256];
|
||||
UChar zone1[32], zone2[32];
|
||||
|
||||
/*Testing countAvailableTimeZones*/
|
||||
offset=0;
|
||||
@ -72,41 +78,44 @@ static void TestCalendar()
|
||||
for(i=0;i<count;i++){
|
||||
ucal_getAvailableTZIDs(offset, i, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("FAIL: ucal_getAvailableTZIDs returned %s\n", myErrorName(status));
|
||||
log_err("FAIL: ucal_getAvailableTZIDs returned %s\n", u_errorName(status));
|
||||
}
|
||||
log_verbose("%s\n", u_austrcpy(tempMsgBuf, ucal_getAvailableTZIDs(offset, i, &status)));
|
||||
}
|
||||
/*get Illegal TZID where index >= count*/
|
||||
ucal_getAvailableTZIDs(offset, i, &status);
|
||||
if(status != U_INDEX_OUTOFBOUNDS_ERROR){
|
||||
log_err("FAIL:for TZID index >= count Expected INDEX_OUTOFBOUNDS_ERROR Got %s\n", myErrorName(status));
|
||||
log_err("FAIL:for TZID index >= count Expected INDEX_OUTOFBOUNDS_ERROR Got %s\n", u_errorName(status));
|
||||
}
|
||||
status=U_ZERO_ERROR;
|
||||
|
||||
/*Test ucal_openTimeZoneEnumeration*/
|
||||
offset=0;
|
||||
uenum = ucal_openTimeZoneEnumeration(offset, &status);
|
||||
/*Test ucal_openTimeZones & ucal_openCountryTimeZones*/
|
||||
for (j=0; j<2; ++j) {
|
||||
const char* api = (j==0) ? "ucal_openTimeZones()" :
|
||||
"ucal_openCountryTimeZones(US)";
|
||||
uenum = (j==0) ? ucal_openTimeZones(&status) :
|
||||
ucal_openCountryTimeZones("US", &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("FAIL: ucal_openTimeZoneEnumeration failed with %s",
|
||||
myErrorName(status));
|
||||
log_err("FAIL: %s failed with %s", api,
|
||||
u_errorName(status));
|
||||
} else {
|
||||
const char* id;
|
||||
int32_t len;
|
||||
count = uenum_count(uenum, &status);
|
||||
log_verbose("The number of timezone id's present with offset 0 is %d\n", count);
|
||||
log_verbose("%s returned %d timezone id's:\n", api, count);
|
||||
if (count < 5) { /* Don't hard code an exact == test here! */
|
||||
log_err("FAIL: in ucal_openTimeZoneEnumeration, got %d, expected at least 5 for rawOffset 0\n", count);
|
||||
log_err("FAIL: in %s, got %d, expected at least 5\n", api, count);
|
||||
}
|
||||
uenum_reset(uenum, &status);
|
||||
if (U_FAILURE(status)){
|
||||
log_err("FAIL: uenum_reset for ucal_openTimeZoneEnumeration returned %s\n",
|
||||
myErrorName(status));
|
||||
log_err("FAIL: uenum_reset for %s returned %s\n",
|
||||
api, u_errorName(status));
|
||||
}
|
||||
for (i=0; i<count; i++) {
|
||||
id = uenum_next(uenum, &len, &status);
|
||||
if (U_FAILURE(status)){
|
||||
log_err("FAIL: uenum_next for ucal_openTimeZoneEnumeration returned %s\n",
|
||||
myErrorName(status));
|
||||
log_err("FAIL: uenum_next for %s returned %s\n",
|
||||
api, u_errorName(status));
|
||||
} else {
|
||||
log_verbose("%s\n", id);
|
||||
}
|
||||
@ -114,11 +123,55 @@ static void TestCalendar()
|
||||
/* Next one should be NULL */
|
||||
id = uenum_next(uenum, &len, &status);
|
||||
if (id != NULL) {
|
||||
log_err("FAIL: uenum_next for ucal_openTimeZoneEnumeration returned %s, expected NULL\n",
|
||||
id);
|
||||
log_err("FAIL: uenum_next for %s returned %s, expected NULL\n",
|
||||
api, id);
|
||||
}
|
||||
}
|
||||
uenum_close(uenum);
|
||||
}
|
||||
|
||||
/*Test ucal_getDSTSavings*/
|
||||
status = U_ZERO_ERROR;
|
||||
i = ucal_getDSTSavings(fgGMTID, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("FAIL: ucal_getDSTSavings(GMT) => %s\n",
|
||||
u_errorName(status));
|
||||
} else if (i != 0) {
|
||||
log_err("FAIL: ucal_getDSTSavings(GMT) => %d, expect 0\n", i);
|
||||
}
|
||||
i = ucal_getDSTSavings(PST, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("FAIL: ucal_getDSTSavings(PST) => %s\n",
|
||||
u_errorName(status));
|
||||
} else if (i != 1*60*60*1000) {
|
||||
log_err("FAIL: ucal_getDSTSavings(PST) => %d, expect %d\n", i, 1*60*60*1000);
|
||||
}
|
||||
|
||||
/*Test ucal_set/getDefaultTimeZone*/
|
||||
status = U_ZERO_ERROR;
|
||||
i = ucal_getDefaultTimeZone(zone1, sizeof(zone1)/sizeof(zone1[0]), &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("FAIL: ucal_getDefaultTimeZone() => %s\n",
|
||||
u_errorName(status));
|
||||
} else {
|
||||
ucal_setDefaultTimeZone(EUROPE_PARIS, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("FAIL: ucal_setDefaultTimeZone(Europe/Paris) => %s\n",
|
||||
u_errorName(status));
|
||||
} else {
|
||||
i = ucal_getDefaultTimeZone(zone2, sizeof(zone2)/sizeof(zone2[0]), &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("FAIL: ucal_getDefaultTimeZone() => %s\n",
|
||||
u_errorName(status));
|
||||
} else {
|
||||
if (u_strcmp(zone2, EUROPE_PARIS) != 0) {
|
||||
log_err("FAIL: ucal_getDefaultTimeZone() did not return Europe/Paris\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
status = U_ZERO_ERROR;
|
||||
ucal_setDefaultTimeZone(zone1, &status);
|
||||
}
|
||||
|
||||
/*Testing the ucal_open() function*/
|
||||
log_verbose("\nTesting the ucal_open()\n");
|
||||
@ -126,21 +179,21 @@ static void TestCalendar()
|
||||
u_uastrcpy(tzID, "PST");
|
||||
caldef=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("FAIL: error in ucal_open caldef : %s\n", myErrorName(status));
|
||||
log_err("FAIL: error in ucal_open caldef : %s\n", u_errorName(status));
|
||||
}
|
||||
|
||||
caldef2=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("FAIL: error in ucal_open caldef : %s\n", myErrorName(status));
|
||||
log_err("FAIL: error in ucal_open caldef : %s\n", u_errorName(status));
|
||||
}
|
||||
u_strcpy(tzID, fgGMTID);
|
||||
calfr=ucal_open(tzID, u_strlen(tzID), "fr_FR", UCAL_TRADITIONAL, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("FAIL: error in ucal_open calfr : %s\n", myErrorName(status));
|
||||
log_err("FAIL: error in ucal_open calfr : %s\n", u_errorName(status));
|
||||
}
|
||||
calit=ucal_open(tzID, u_strlen(tzID), "it_IT", UCAL_TRADITIONAL, &status);
|
||||
if(U_FAILURE(status)) {
|
||||
log_err("FAIL: error in ucal_open calit : %s\n", myErrorName(status));
|
||||
log_err("FAIL: error in ucal_open calit : %s\n", u_errorName(status));
|
||||
}
|
||||
|
||||
|
||||
@ -174,7 +227,7 @@ static void TestCalendar()
|
||||
/* open the date format and format the date to check the output */
|
||||
datdef=udat_open(UDAT_FULL,UDAT_FULL ,NULL, NULL, 0,NULL,0,&status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("FAIL: error in creating the dateformat : %s\n", myErrorName(status));
|
||||
log_err("FAIL: error in creating the dateformat : %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
log_verbose("PASS: The current date and time fetched is %s\n", u_austrcpy(tempMsgBuf, myDateFormat(datdef, now)) );
|
||||
@ -194,7 +247,7 @@ static void TestCalendar()
|
||||
ucal_getTimeZoneDisplayName(caldef, UCAL_DST, "en_US", result, resultlength, &status);
|
||||
}
|
||||
if(U_FAILURE(status)) {
|
||||
log_err("FAIL: Error in getting the timezone display name : %s\n", myErrorName(status));
|
||||
log_err("FAIL: Error in getting the timezone display name : %s\n", u_errorName(status));
|
||||
}
|
||||
else{
|
||||
log_verbose("PASS: getting the time zone display name successful : %s, %d needed \n",
|
||||
@ -280,7 +333,7 @@ static void TestCalendar()
|
||||
ucal_setDateTime(caldef, 1999, UCAL_MARCH, 3, 10, 45, 20, &status);
|
||||
ucal_inDaylightTime(caldef, &status );
|
||||
if(U_FAILURE(status)) {
|
||||
log_err("Error in ucal_inDaylightTime: %s\n", myErrorName(status));
|
||||
log_err("Error in ucal_inDaylightTime: %s\n", u_errorName(status));
|
||||
}
|
||||
if(!ucal_inDaylightTime(caldef, &status))
|
||||
log_verbose("PASS: It is not in daylight saving's time\n");
|
||||
@ -330,7 +383,7 @@ static void TestGetSetDateAPI()
|
||||
datdef=udat_open(UDAT_DEFAULT,UDAT_DEFAULT ,"en_US",fgGMTID,-1,NULL,0, &status);
|
||||
if(U_FAILURE(status))
|
||||
{
|
||||
log_err("error in creating the dateformat : %s\n", myErrorName(status));
|
||||
log_err("error in creating the dateformat : %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -339,14 +392,14 @@ static void TestGetSetDateAPI()
|
||||
log_verbose("\nTesting the date and time fetched in millis for a calendar using getMillis\n");
|
||||
d1=ucal_getMillis(caldef, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("Error in getMillis : %s\n", myErrorName(status));
|
||||
log_err("Error in getMillis : %s\n", u_errorName(status));
|
||||
}
|
||||
|
||||
/*testing setMillis */
|
||||
log_verbose("\nTesting the set date and time function using setMillis\n");
|
||||
ucal_setMillis(caldef, d2, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("Error in setMillis : %s\n", myErrorName(status));
|
||||
log_err("Error in setMillis : %s\n", u_errorName(status));
|
||||
}
|
||||
|
||||
/*testing if the calendar date is set properly or not */
|
||||
@ -362,14 +415,14 @@ static void TestGetSetDateAPI()
|
||||
log_verbose("\nTesting if the function ucal_setTimeZone() works fine\n");
|
||||
ucal_setMillis(caldef2, d2, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("Error in getMillis : %s\n", myErrorName(status));;
|
||||
log_err("Error in getMillis : %s\n", u_errorName(status));;
|
||||
}
|
||||
hour=ucal_get(caldef2, UCAL_HOUR_OF_DAY, &status);
|
||||
|
||||
u_uastrcpy(tzID, "PST");
|
||||
ucal_setTimeZone(caldef2,tzID, 3, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("Error in setting the time zone using ucal_setTimeZone(): %s\n", myErrorName(status));
|
||||
log_err("Error in setting the time zone using ucal_setTimeZone(): %s\n", u_errorName(status));
|
||||
}
|
||||
else
|
||||
log_verbose("ucal_setTimeZone worked fine\n");
|
||||
@ -385,7 +438,7 @@ static void TestGetSetDateAPI()
|
||||
u_strcpy(tzID, fgGMTID);
|
||||
ucal_setTimeZone(caldef2, tzID, 3, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("Error in setting the time zone using ucal_setTimeZone(): %s\n", myErrorName(status));
|
||||
log_err("Error in setting the time zone using ucal_setTimeZone(): %s\n", u_errorName(status));
|
||||
}
|
||||
if(d2==ucal_getMillis(caldef2, &status))
|
||||
log_verbose("PASS: setTimeZone roundtrip test passed\n");
|
||||
@ -394,7 +447,7 @@ static void TestGetSetDateAPI()
|
||||
|
||||
zoneOffset = ucal_get(caldef2, UCAL_ZONE_OFFSET, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("Error in getting the time zone using ucal_get() after using ucal_setTimeZone(): %s\n", myErrorName(status));
|
||||
log_err("Error in getting the time zone using ucal_get() after using ucal_setTimeZone(): %s\n", u_errorName(status));
|
||||
}
|
||||
else if (zoneOffset != 0) {
|
||||
log_err("Error in getting the time zone using ucal_get() after using ucal_setTimeZone() offset=%d\n", zoneOffset);
|
||||
@ -402,7 +455,7 @@ static void TestGetSetDateAPI()
|
||||
|
||||
ucal_setTimeZone(caldef2, NULL, -1, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("Error in setting the time zone using ucal_setTimeZone(): %s\n", myErrorName(status));
|
||||
log_err("Error in setting the time zone using ucal_setTimeZone(): %s\n", u_errorName(status));
|
||||
}
|
||||
if(ucal_getMillis(caldef2, &status))
|
||||
log_verbose("PASS: setTimeZone roundtrip test passed\n");
|
||||
@ -411,7 +464,7 @@ static void TestGetSetDateAPI()
|
||||
|
||||
zoneOffset = ucal_get(caldef2, UCAL_ZONE_OFFSET, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("Error in getting the time zone using ucal_get() after using ucal_setTimeZone(): %s\n", myErrorName(status));
|
||||
log_err("Error in getting the time zone using ucal_get() after using ucal_setTimeZone(): %s\n", u_errorName(status));
|
||||
}
|
||||
else if (zoneOffset != -28800000) {
|
||||
log_err("Error in getting the time zone using ucal_get() after using ucal_setTimeZone() offset=%d\n", zoneOffset);
|
||||
@ -425,7 +478,7 @@ static void TestGetSetDateAPI()
|
||||
u_uastrcpy(temp, "Dec 17, 1971 11:05:28 PM");
|
||||
ucal_setDate(caldef,1971, UCAL_DECEMBER, 17, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("error in setting the calendar date : %s\n", myErrorName(status));
|
||||
log_err("error in setting the calendar date : %s\n", u_errorName(status));
|
||||
}
|
||||
/*checking if the calendar date is set properly or not */
|
||||
d1=ucal_getMillis(caldef, &status);
|
||||
@ -456,7 +509,7 @@ static void TestGetSetDateAPI()
|
||||
u_uastrcpy(temp, "May 3, 1972 4:30:42 PM");
|
||||
ucal_setDateTime(caldef,1972, UCAL_MAY, 3, 16, 30, 42, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("error in setting the calendar date : %s\n", myErrorName(status));
|
||||
log_err("error in setting the calendar date : %s\n", u_errorName(status));
|
||||
}
|
||||
/*checking if the calendar date is set properly or not */
|
||||
d1=ucal_getMillis(caldef, &status);
|
||||
@ -509,20 +562,20 @@ static void TestFieldGetSet()
|
||||
/*open the calendar used */
|
||||
cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_open failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_open failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
datdef=udat_open(UDAT_SHORT,UDAT_SHORT ,NULL,fgGMTID,-1,NULL, 0, &status);
|
||||
if(U_FAILURE(status))
|
||||
{
|
||||
log_err("error in creating the dateformat : %s\n", myErrorName(status));
|
||||
log_err("error in creating the dateformat : %s\n", u_errorName(status));
|
||||
}
|
||||
|
||||
/*Testing ucal_get()*/
|
||||
log_verbose("\nTesting the ucal_get() function of Calendar\n");
|
||||
ucal_setDateTime(cal, 1999, UCAL_MARCH, 12, 5, 25, 30, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("error in the setDateTime() : %s\n", myErrorName(status));
|
||||
log_err("error in the setDateTime() : %s\n", u_errorName(status));
|
||||
}
|
||||
if(ucal_get(cal, UCAL_YEAR, &status)!=1999 || ucal_get(cal, UCAL_MONTH, &status)!=2 ||
|
||||
ucal_get(cal, UCAL_DATE, &status)!=12 || ucal_get(cal, UCAL_HOUR, &status)!=5)
|
||||
@ -658,7 +711,7 @@ static void TestAddRollExtensive()
|
||||
/*open the calendar used */
|
||||
cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status);;
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_open() failed : %s\n", myErrorName(status));
|
||||
log_err("ucal_open() failed : %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -670,30 +723,30 @@ static void TestAddRollExtensive()
|
||||
log_verbose("\nTesting to confirm that adding to various fields works with ucal_add()\n");
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_add(cal,UCAL_YEAR, 1, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", myErrorName(status)); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", u_errorName(status)); return; }
|
||||
y++;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_add(cal,UCAL_MONTH, 12, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", u_errorName(status) ); return; }
|
||||
y+=1;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_add(cal,UCAL_DATE, 1, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", u_errorName(status) ); return; }
|
||||
d++;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_add(cal,UCAL_DATE, 2, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", u_errorName(status) ); return; }
|
||||
d += 2;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_add(cal,UCAL_DATE, 28, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_add failed: %s\n", u_errorName(status) ); return; }
|
||||
++m;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_add(cal, (UCalendarDateFields)-1, 10, &status);
|
||||
if(status==U_ILLEGAL_ARGUMENT_ERROR)
|
||||
log_verbose("Pass: Illegal argument error as expected\n");
|
||||
else{
|
||||
log_err("Fail: No, illegal argument error as expected. Got....: %s\n", myErrorName(status));
|
||||
log_err("Fail: No, illegal argument error as expected. Got....: %s\n", u_errorName(status));
|
||||
}
|
||||
status=U_ZERO_ERROR;
|
||||
|
||||
@ -701,39 +754,39 @@ static void TestAddRollExtensive()
|
||||
/*confirm that applying roll to various fields works fine*/
|
||||
log_verbose("\nTesting to confirm that ucal_roll() works\n");
|
||||
ucal_roll(cal, UCAL_DATE, -1, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", u_errorName(status) ); return; }
|
||||
d -=1;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_roll(cal, UCAL_MONTH, -2, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", u_errorName(status) ); return; }
|
||||
m -=2;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_roll(cal, UCAL_DATE, 1, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", u_errorName(status) ); return; }
|
||||
d +=1;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_roll(cal, UCAL_MONTH, -12, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", u_errorName(status) ); return; }
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_roll(cal, UCAL_YEAR, -1, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", u_errorName(status) ); return; }
|
||||
y -=1;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_roll(cal, UCAL_DATE, 29, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_roll failed: %s\n", u_errorName(status) ); return; }
|
||||
d = 2;
|
||||
checkDate(cal, y, m, d);
|
||||
ucal_roll(cal, (UCalendarDateFields)-1, 10, &status);
|
||||
if(status==U_ILLEGAL_ARGUMENT_ERROR)
|
||||
log_verbose("Pass: illegal arguement error as expected\n");
|
||||
else{
|
||||
log_err("Fail: no illegal argument error got..: %s\n", myErrorName(status));
|
||||
log_err("Fail: no illegal argument error got..: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
status=U_ZERO_ERROR;
|
||||
ucal_setDateTime(cal, 1999, UCAL_FEBRUARY, 28, 10, 30, 45, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("error is setting the datetime: %s\n", myErrorName(status));
|
||||
log_err("error is setting the datetime: %s\n", u_errorName(status));
|
||||
}
|
||||
ucal_add(cal, UCAL_MONTH, 1, &status);
|
||||
checkDate(cal, 1999, UCAL_MARCH, 28);
|
||||
@ -748,7 +801,7 @@ static void TestAddRollExtensive()
|
||||
y = 1997; m = UCAL_FEBRUARY; d = 1; hr = 1; min = 1; sec = 0; ms = 0;
|
||||
cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_open failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_open failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
ucal_set(cal, UCAL_YEAR, y);
|
||||
@ -771,7 +824,7 @@ static void TestAddRollExtensive()
|
||||
for (i = 0; i < limit; i++) {
|
||||
ucal_add(cal, e, -1, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_add -1 failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_add -1 failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -791,7 +844,7 @@ static void TestAddRollExtensive()
|
||||
for (i = 0; i < limit; i++) {
|
||||
ucal_roll(cal, e, -1, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_roll -1 failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_roll -1 failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -817,7 +870,7 @@ static void TestGetLimits()
|
||||
/*open the calendar used */
|
||||
cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_GREGORIAN, &status);;
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_open() for gregorian calendar failed in TestGetLimits: %s\n", myErrorName(status));
|
||||
log_err("ucal_open() for gregorian calendar failed in TestGetLimits: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -856,7 +909,7 @@ static void TestGetLimits()
|
||||
ac_min=ucal_getLimit(cal, UCAL_MONTH, UCAL_ACTUAL_MINIMUM, &status);
|
||||
ac_max=ucal_getLimit(cal, UCAL_MONTH, UCAL_ACTUAL_MAXIMUM, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("Error in getLimits: %s\n", myErrorName(status));
|
||||
log_err("Error in getLimits: %s\n", u_errorName(status));
|
||||
}
|
||||
if(min!=0 || max!=11 || gr_min!=0 || le_max!=11 || ac_min!=0 || ac_max!=11)
|
||||
log_err("There is and error in getLimits in fetching the values\n");
|
||||
@ -917,13 +970,13 @@ static void TestDOWProgression()
|
||||
/*open the calendar used */
|
||||
cal=ucal_open(tzID, u_strlen(tzID), "en_US", UCAL_TRADITIONAL, &status);;
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_open failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_open failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
|
||||
datfor=udat_open(UDAT_MEDIUM,UDAT_MEDIUM ,NULL, fgGMTID,-1,NULL, 0, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("error in creating the dateformat : %s\n", myErrorName(status));
|
||||
log_err("error in creating the dateformat : %s\n", u_errorName(status));
|
||||
}
|
||||
|
||||
|
||||
@ -932,23 +985,23 @@ static void TestDOWProgression()
|
||||
log_verbose("\nTesting the DOW progression\n");
|
||||
|
||||
initialDOW = ucal_get(cal, UCAL_DAY_OF_WEEK, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_get() failed: %s\n", myErrorName(status) ); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_get() failed: %s\n", u_errorName(status) ); return; }
|
||||
newDOW = initialDOW;
|
||||
do {
|
||||
DOW = newDOW;
|
||||
log_verbose("DOW = %d...\n", DOW);
|
||||
date1=ucal_getMillis(cal, &status);
|
||||
if(U_FAILURE(status)){ log_err("ucal_getMiilis() failed: %s\n", myErrorName(status)); return;}
|
||||
if(U_FAILURE(status)){ log_err("ucal_getMiilis() failed: %s\n", u_errorName(status)); return;}
|
||||
log_verbose("%s\n", u_austrcpy(tempMsgBuf, myDateFormat(datfor, date1)));
|
||||
|
||||
ucal_add(cal,UCAL_DAY_OF_WEEK, delta, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_add() failed: %s\n", myErrorName(status)); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_add() failed: %s\n", u_errorName(status)); return; }
|
||||
|
||||
newDOW = ucal_get(cal, UCAL_DAY_OF_WEEK, &status);
|
||||
if (U_FAILURE(status)) { log_err("ucal_get() failed: %s\n", myErrorName(status)); return; }
|
||||
if (U_FAILURE(status)) { log_err("ucal_get() failed: %s\n", u_errorName(status)); return; }
|
||||
expectedDOW = 1 + (DOW + delta - 1) % 7;
|
||||
date1=ucal_getMillis(cal, &status);
|
||||
if(U_FAILURE(status)){ log_err("ucal_getMiilis() failed: %s\n", myErrorName(status)); return;}
|
||||
if(U_FAILURE(status)){ log_err("ucal_getMiilis() failed: %s\n", u_errorName(status)); return;}
|
||||
if (newDOW != expectedDOW) {
|
||||
log_err("Day of week should be %d instead of %d on %s", expectedDOW, newDOW,
|
||||
u_austrcpy(tempMsgBuf, myDateFormat(datfor, date1)) );
|
||||
@ -993,30 +1046,30 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn
|
||||
u_strcpy(tzID, fgGMTID);
|
||||
gmtcal=ucal_open(tzID, 3, "en_US", UCAL_TRADITIONAL, &status);;
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_open failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_open failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
u_uastrcpy(tzID, "PST");
|
||||
cal = ucal_open(tzID, 3, "en_US", UCAL_TRADITIONAL, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_open failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_open failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
|
||||
datfor=udat_open(UDAT_MEDIUM,UDAT_MEDIUM ,NULL, fgGMTID,-1,NULL, 0, &status);
|
||||
if(U_FAILURE(status)){
|
||||
log_err("error in creating the dateformat : %s\n", myErrorName(status));
|
||||
log_err("error in creating the dateformat : %s\n", u_errorName(status));
|
||||
}
|
||||
|
||||
ucal_setDateTime(gmtcal, yr, mo - 1, dt, hr, mn, sc, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_setDateTime failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_setDateTime failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
ucal_set(gmtcal, UCAL_MILLISECOND, 0);
|
||||
date1 = ucal_getMillis(gmtcal, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_getMillis failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_getMillis failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
log_verbose("date = %s\n", u_austrcpy(tempMsgBuf, myDateFormat(datfor, date1)) );
|
||||
@ -1024,7 +1077,7 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn
|
||||
|
||||
ucal_setMillis(cal, date1, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_setMillis() failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_setMillis() failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1032,7 +1085,7 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn
|
||||
offset += ucal_get(cal, UCAL_DST_OFFSET, &status);
|
||||
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_get() failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_get() failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
temp=(double)((double)offset / 1000.0 / 60.0 / 60.0);
|
||||
@ -1043,7 +1096,7 @@ static void testZones(int32_t yr, int32_t mo, int32_t dt, int32_t hr, int32_t mn
|
||||
ucal_get(cal, UCAL_SECOND, &status)) * 1000 +
|
||||
ucal_get(cal, UCAL_MILLISECOND, &status) - offset;
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_get() failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_get() failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1094,7 +1147,7 @@ static void checkDateTime(UCalendar* c,
|
||||
ucal_get(c, UCAL_MILLISECOND, &status) );
|
||||
|
||||
if (U_FAILURE(status)){
|
||||
log_err("ucal_get failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_get failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1118,7 +1171,7 @@ static void checkDate(UCalendar* c, int32_t y, int32_t m, int32_t d)
|
||||
ucal_get(c, UCAL_DATE, &status) );
|
||||
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_get failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_get failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -1140,13 +1193,13 @@ static void verify1(const char* msg, UCalendar* c, UDateFormat* dat, int32_t yea
|
||||
ucal_get(c, UCAL_MONTH, &status) == month &&
|
||||
ucal_get(c, UCAL_DATE, &status) == day) {
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("FAIL: Calendar::get failed: %s\n", myErrorName(status));
|
||||
log_err("FAIL: Calendar::get failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
log_verbose("PASS: %s\n", msg);
|
||||
d1=ucal_getMillis(c, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_getMillis failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_getMillis failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
/*log_verbose(austrdup(myDateFormat(dat, d1)) );*/
|
||||
@ -1155,7 +1208,7 @@ static void verify1(const char* msg, UCalendar* c, UDateFormat* dat, int32_t yea
|
||||
log_err("FAIL: %s\n", msg);
|
||||
d1=ucal_getMillis(c, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_getMillis failed: %s\n", myErrorName(status) );
|
||||
log_err("ucal_getMillis failed: %s\n", u_errorName(status) );
|
||||
return;
|
||||
}
|
||||
log_err("Got %s Expected %d/%d/%d \n", austrdup(myDateFormat(dat, d1)), year, month + 1, day );
|
||||
@ -1181,13 +1234,13 @@ static void verify2(const char* msg, UCalendar* c, UDateFormat* dat, int32_t yea
|
||||
ucal_get(c, UCAL_SECOND, &status) == sec &&
|
||||
ucal_get(c, UCAL_AM_PM, &status) == am_pm ){
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("FAIL: Calendar::get failed: %s\n", myErrorName(status));
|
||||
log_err("FAIL: Calendar::get failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
log_verbose("PASS: %s\n", msg);
|
||||
d1=ucal_getMillis(c, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_getMillis failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_getMillis failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
log_verbose("%s\n" , u_austrcpy(tempMsgBuf, myDateFormat(dat, d1)) );
|
||||
@ -1196,7 +1249,7 @@ static void verify2(const char* msg, UCalendar* c, UDateFormat* dat, int32_t yea
|
||||
log_err("FAIL: %s\n", msg);
|
||||
d1=ucal_getMillis(c, &status);
|
||||
if (U_FAILURE(status)) {
|
||||
log_err("ucal_getMillis failed: %s\n", myErrorName(status));
|
||||
log_err("ucal_getMillis failed: %s\n", u_errorName(status));
|
||||
return;
|
||||
}
|
||||
log_err("Got %s Expected %d/%d/%d/ %d:%d:%d %s\n", austrdup(myDateFormat(dat, d1)),
|
||||
|
Loading…
Reference in New Issue
Block a user