mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-28 06:27:02 +00:00
Merge branch 'master' of github.com:280north/cappuccino
This commit is contained in:
+13
-5
@@ -182,17 +182,25 @@ var CPDateReferenceDate = new Date(Date.UTC(2001, 1, 1, 0, 0, 0, 0));
|
||||
return (self > anotherDate) ? self : anotherDate;
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns timezone offset as a string in ±HHMM format
|
||||
*/
|
||||
+ (CPString)timezoneOffsetString:(int)timezoneOffset
|
||||
{
|
||||
var offset = -timezoneOffset,
|
||||
positive = offset >= 0,
|
||||
hours = positive ? FLOOR(offset / 60) : CEIL(offset / 60),
|
||||
minutes = offset - hours * 60;
|
||||
return [CPString stringWithFormat:@"%s%02d%02d", positive ? "+" : "-", ABS(hours), ABS(minutes)];
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the date as a string in the international format
|
||||
YYYY-MM-DD HH:MM:SS ±HHMM.
|
||||
*/
|
||||
- (CPString)description
|
||||
{
|
||||
var positive = self.getTimezoneOffset() >= 0,
|
||||
hours = FLOOR(self.getTimezoneOffset() / 60),
|
||||
minutes = self.getTimezoneOffset() - hours * 60;
|
||||
|
||||
return [CPString stringWithFormat:@"%04d-%02d-%02d %02d:%02d:%02d %s%02d%02d", self.getFullYear(), self.getMonth()+1, self.getDate(), self.getHours(), self.getMinutes(), self.getSeconds(), positive ? "+" : "-", ABS(hours), ABS(minutes)];
|
||||
return [CPString stringWithFormat:@"%04d-%02d-%02d %02d:%02d:%02d %s", self.getFullYear(), self.getMonth()+1, self.getDate(), self.getHours(), self.getMinutes(), self.getSeconds(), [CPDate timezoneOffsetString:self.getTimezoneOffset()]];
|
||||
}
|
||||
|
||||
- (id)copy
|
||||
|
||||
@@ -69,12 +69,13 @@
|
||||
expectedDay = 13,
|
||||
expectedHour = 23,
|
||||
expectedMinute = 31,
|
||||
offsetPositive = date.getTimezoneOffset() >= 0,
|
||||
offsetHours = Math.floor(date.getTimezoneOffset() / 60),
|
||||
offsetMinutes = date.getTimezoneOffset() - offsetHours * 60,
|
||||
offset = -date.getTimezoneOffset(),
|
||||
offsetPositive = offset >= 0,
|
||||
offsetHours = offsetPositive ? Math.floor(offset / 60) : Math.ceil(offset / 60),
|
||||
offsetMinutes = offset - offsetHours * 60,
|
||||
expectedString;
|
||||
expectedHour -= offsetHours;
|
||||
expectedMinute -= offsetMinutes;
|
||||
expectedHour += offsetHours;
|
||||
expectedMinute += offsetMinutes;
|
||||
if (expectedMinute < 0)
|
||||
{
|
||||
expectedMinute += 60;
|
||||
@@ -102,6 +103,14 @@
|
||||
expectedString = [CPString stringWithFormat:"2009-02-%02d %02d:%02d:30 -%02d%02d", expectedDay, expectedHour, expectedMinute, ABS(offsetHours), ABS(offsetMinutes)];
|
||||
|
||||
[self assert:expectedString equals: [date description]];
|
||||
|
||||
// Now test that timezone convertion algorithm in CPDate works correctly for
|
||||
// different timezones
|
||||
[self assert:"+0000" equals: [CPDate timezoneOffsetString:0]];
|
||||
[self assert:"-0900" equals: [CPDate timezoneOffsetString:+540]];
|
||||
[self assert:"+0300" equals: [CPDate timezoneOffsetString:-180]];
|
||||
[self assert:"-0130" equals: [CPDate timezoneOffsetString:+90]];
|
||||
[self assert:"+0130" equals: [CPDate timezoneOffsetString:-90]];
|
||||
}
|
||||
|
||||
- (void)testCopy
|
||||
|
||||
Reference in New Issue
Block a user