mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-31 16:50:58 +00:00
Added more code to NSDateFormatter.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31929 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
76a29d3b14
commit
c38f0427f7
2 changed files with 202 additions and 5 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
2011-01-22 Stefan Bidigaray <stefanbidi@gmail.com>
|
||||||
|
|
||||||
|
* Source/NSDateFormatter.m: Implemented a few more methods.
|
||||||
|
|
||||||
2011-01-22 Stefan Bidigaray <stefanbidi@gmail.com>
|
2011-01-22 Stefan Bidigaray <stefanbidi@gmail.com>
|
||||||
|
|
||||||
* configure:
|
* configure:
|
||||||
|
|
|
@ -37,7 +37,9 @@
|
||||||
#import "Foundation/NSDateFormatter.h"
|
#import "Foundation/NSDateFormatter.h"
|
||||||
#import "Foundation/NSCoder.h"
|
#import "Foundation/NSCoder.h"
|
||||||
|
|
||||||
|
#if defined(HAVE_UNICODE_UDAT_H)
|
||||||
#include <unicode/udat.h>
|
#include <unicode/udat.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,6 +75,11 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
||||||
|
|
||||||
- (id) init
|
- (id) init
|
||||||
{
|
{
|
||||||
|
int length;
|
||||||
|
unichar buffer[BUFFER_SIZE];
|
||||||
|
unichar *value = buffer;
|
||||||
|
NSInteger err;
|
||||||
|
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if (self == nil)
|
if (self == nil)
|
||||||
return nil;
|
return nil;
|
||||||
|
@ -81,6 +88,25 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
||||||
_locale = [NSLocale currentLocale];
|
_locale = [NSLocale currentLocale];
|
||||||
_tz = [NSTimeZone defaultTimeZone];
|
_tz = [NSTimeZone defaultTimeZone];
|
||||||
|
|
||||||
|
/* According to Apple docs, default behavior is NSDateFormatterBehavior10_4 on
|
||||||
|
10.5 and later. Yeah, go figure. */
|
||||||
|
#if OS_API_VERSION(MAC_OS_X_VERSION_10_5, GS_API_LATEST) && GS_USE_ICU == 1
|
||||||
|
err = U_ZERO_ERROR;
|
||||||
|
|
||||||
|
length =
|
||||||
|
udat_toPattern (_formatter, 0, value, BUFFER_SIZE, &err);
|
||||||
|
if (length > BUFFER_SIZE)
|
||||||
|
{
|
||||||
|
value = NSZoneMalloc ([self zone], sizeof(unichar) * length);
|
||||||
|
udat_toPattern (_formatter, 0, value, length, &err);
|
||||||
|
}
|
||||||
|
|
||||||
|
_dateFormat = [NSString stringWithCharacters: value length: length];
|
||||||
|
|
||||||
|
if (length > BUFFER_SIZE)
|
||||||
|
NSZoneFree ([self zone], value);
|
||||||
|
#endif
|
||||||
|
|
||||||
[self _resetUDateFormat];
|
[self _resetUDateFormat];
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
@ -113,6 +139,8 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
||||||
- (void) dealloc
|
- (void) dealloc
|
||||||
{
|
{
|
||||||
RELEASE(_dateFormat);
|
RELEASE(_dateFormat);
|
||||||
|
RELEASE(_locale);
|
||||||
|
RELEASE(_tz);
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -344,9 +372,10 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
||||||
udat_applyPattern (_formatter, 0, pattern, patternLength);
|
udat_applyPattern (_formatter, 0, pattern, patternLength);
|
||||||
|
|
||||||
NSZoneFree ([self zone], pattern);
|
NSZoneFree ([self zone], pattern);
|
||||||
#else
|
|
||||||
return;
|
|
||||||
#endif
|
#endif
|
||||||
|
if (_dateFormat)
|
||||||
|
RELEASE(_dateFormat);
|
||||||
|
_dateFormat = RETAIN(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSDateFormatterStyle) dateStyle
|
- (NSDateFormatterStyle) dateStyle
|
||||||
|
@ -425,12 +454,25 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
||||||
|
|
||||||
- (NSDate *) twoDigitStartDate
|
- (NSDate *) twoDigitStartDate
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
UErrorCode err = U_ZERO_ERROR;
|
||||||
|
return [NSDate dateWithTimeIntervalSince1970:
|
||||||
|
(udat_get2DigitYearStart (_formatter, &err) / 1000.0)];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setTwoDigitStartDate: (NSDate *) date
|
- (void) setTwoDigitStartDate: (NSDate *) date
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
UErrorCode err = U_ZERO_ERROR;
|
||||||
|
udat_set2DigitYearStart (_formatter,
|
||||||
|
([date timeIntervalSince1970] * 1000.0),
|
||||||
|
&err);
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -456,52 +498,92 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
||||||
|
|
||||||
- (NSArray *) weekdaySymbols
|
- (NSArray *) weekdaySymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_WEEKDAYS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setWeekdaySymbols: () array
|
- (void) setWeekdaySymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_WEEKDAYS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) shortWeekdaySymbols
|
- (NSArray *) shortWeekdaySymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_SHORT_WEEKDAYS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setShortWeekdaySymbols: (NSArray *) array
|
- (void) setShortWeekdaySymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _getSymbols: UDAT_SHORT_WEEKDAYS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) monthSymbols
|
- (NSArray *) monthSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_MONTHS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setMonthSymbols: (NSArray *) array
|
- (void) setMonthSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _getSymbols: UDAT_MONTHS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) shortMonthSymbols
|
- (NSArray *) shortMonthSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_SHORT_MONTHS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setShortMonthSymbols: (NSArray *) array
|
- (void) setShortMonthSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _getSymbols: UDAT_SHORT_MONTHS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) eraSymbols
|
- (NSArray *) eraSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_ERAS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setEraSymbols: (NSArray *) array
|
- (void) setEraSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_ERAS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSDate *) gregorianStartDate
|
- (NSDate *) gregorianStartDate
|
||||||
|
@ -516,133 +598,237 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
||||||
|
|
||||||
- (NSArray *) longEraSymbols
|
- (NSArray *) longEraSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_ERA_NAMES];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setLongEraSymbols: (NSArray *) array
|
- (void) setLongEraSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_ERA_NAMES];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (NSArray *) quarterSymbols
|
- (NSArray *) quarterSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_QUARTERS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setQuarterSymbols: (NSArray *) array
|
- (void) setQuarterSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_QUARTERS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) shortQuarterSymbols
|
- (NSArray *) shortQuarterSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_SHORT_QUARTERS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setShortQuarterSymbols: (NSArray *) array
|
- (void) setShortQuarterSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_SHORT_QUARTERS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) standaloneQuarterSymbols
|
- (NSArray *) standaloneQuarterSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_STANDALONE_QUARTERS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setStandaloneQuarterSymbols: (NSArray *) array
|
- (void) setStandaloneQuarterSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_STANDALONE_QUARTERS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) shortStandaloneQuarterSymbols
|
- (NSArray *) shortStandaloneQuarterSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_STANDALONE_SHORT_QUARTERS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setShortStandaloneQuarterSymbols: (NSArray *) array
|
- (void) setShortStandaloneQuarterSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_STANDALONE_SHORT_QUARTERS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) shortStandaloneMonthSymbols
|
- (NSArray *) shortStandaloneMonthSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_STANDALONE_SHORT_MONTHS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setShortStandaloneMonthSymbols: (NSArray *) array
|
- (void) setShortStandaloneMonthSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_STANDALONE_SHORT_MONTHS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) standaloneMonthSymbols
|
- (NSArray *) standaloneMonthSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_STANDALONE_MONTHS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setStandaloneMonthSymbols: (NSArray *) array
|
- (void) setStandaloneMonthSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_STANDALONE_MONTHS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) veryShortMonthSymbols
|
- (NSArray *) veryShortMonthSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_NARROW_MONTHS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setVeryShortMonthSymbols: (NSArray *) array
|
- (void) setVeryShortMonthSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_NARROW_MONTHS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) veryShortStandaloneMonthSymbols
|
- (NSArray *) veryShortStandaloneMonthSymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_STANDALONE_NARROW_MONTHS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setVeryShortStandaloneMonthSymbols: (NSArray *) array
|
- (void) setVeryShortStandaloneMonthSymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_STANDALONE_NARROW_MONTHS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) shortStandaloneWeekdaySymbols
|
- (NSArray *) shortStandaloneWeekdaySymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_STANDALONE_SHORT_WEEKDAYS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setShortStandaloneWeekdaySymbols: (NSArray *) array
|
- (void) setShortStandaloneWeekdaySymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_STANDALONE_SHORT_WEEKDAYS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) standaloneWeekdaySymbols
|
- (NSArray *) standaloneWeekdaySymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_STANDALONE_WEEKDAYS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setStandaloneWeekdaySymbols: (NSArray *) array
|
- (void) setStandaloneWeekdaySymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_STANDALONE_WEEKDAYS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) veryShortWeekdaySymbols
|
- (NSArray *) veryShortWeekdaySymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_SHORT_WEEKDAYS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setVeryShortWeekdaySymbols: (NSArray *) array
|
- (void) setVeryShortWeekdaySymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_SHORT_WEEKDAYS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) veryShortStandaloneWeekdaySymbols
|
- (NSArray *) veryShortStandaloneWeekdaySymbols
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
return [self _getSymbols: UDAT_STANDALONE_NARROW_WEEKDAYS];
|
||||||
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setVeryShortStandaloneWeekdaySymbols: (NSArray *) array
|
- (void) setVeryShortStandaloneWeekdaySymbols: (NSArray *) array
|
||||||
{
|
{
|
||||||
|
#if GS_USE_ICU == 1
|
||||||
|
[self _setSymbols: array : UDAT_STANDALONE_NARROW_WEEKDAYS];
|
||||||
|
#else
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSString *) localizedStringFromDate: (NSDate *) date
|
+ (NSString *) localizedStringFromDate: (NSDate *) date
|
||||||
|
@ -665,7 +851,14 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
||||||
options: (NSUInteger) opts
|
options: (NSUInteger) opts
|
||||||
locale: (NSLocale *) locale
|
locale: (NSLocale *) locale
|
||||||
{
|
{
|
||||||
return nil;
|
NSString *result;
|
||||||
|
NSDateFormatter *fmt = [[self alloc] init];
|
||||||
|
|
||||||
|
[fmt setLocale: locale];
|
||||||
|
result = [fmt dateFormat];
|
||||||
|
RELEASE(fmt);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL) doesRelativeDateFormatting
|
- (BOOL) doesRelativeDateFormatting
|
||||||
|
@ -773,7 +966,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
|
||||||
++idx;
|
++idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
return [NSArray arrayWithArray: mArray];;
|
return [NSArray arrayWithArray: mArray];
|
||||||
#else
|
#else
|
||||||
return nil;
|
return nil;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue