Hi,
I tried using ERXTimestampUtility.firstDateInNextMonth() and
ERXTimestampUtility.firstDateInSameMonth() and didn't get what I expected.
Either it's a bug or, the name is less than ideal. I started testing other
calls in like firstDateInSameWeek() and discovered problems as well.
If anybody is using those calls, please explain what they are supposed to do ...
Here are some test I ran on the 2012-11-20 22:33:13 Etc/GMT
Wonders result as is
Nov 20 17:33:13 com.obzerv.Experiments - ERXTimestampUtility
Nov 20 17:33:13 com.obzerv.Experiments - ERXTimestampUtility.monthOfYear = 10
<--- Wow we are in november, 11 for NSTimstamp
Nov 20 17:33:13 com.obzerv.Experiments - ERXTimestampUtility.dayOfMonth = 20
Nov 20 17:33:13 com.obzerv.Experiments - ERXTimestampUtility.dayOfWeek = 3
Nov 20 17:33:13 com.obzerv.Experiments - ______________________________
Nov 20 17:33:13 com.obzerv.Experiments - ERXTimestampUtility inWonder
Nov 20 17:33:13 com.obzerv.Experiments - now 2012-11-20
22:33:13 Etc/GMT
Nov 20 17:33:13 com.obzerv.Experiments - firstDateInSameMonth 2012-09-11
04:00:00 Etc/GMT <--- Wrong
Nov 20 17:33:13 com.obzerv.Experiments - firstDateInSameWeek 2012-09-28
04:00:00 Etc/GMT <--- Wrong
Nov 20 17:33:13 com.obzerv.Experiments - firstDateInNextMonth 2012-10-11
04:00:00 Etc/GMT <--- Wrong
Nov 20 17:33:13 com.obzerv.Experiments - ______________________________
Nov 20 17:33:13 com.obzerv.Experiments - Proposed Patched Versions
Nov 20 17:33:13 com.obzerv.Experiments - now 2012-11-20
22:33:13 Etc/GMT
Nov 20 17:33:13 com.obzerv.Experiments - firstDateInSameMonth 2012-11-01
04:00:00 Etc/GMT
Nov 20 17:33:13 com.obzerv.Experiments - firstDateInSameWeek 2012-11-18
05:00:00 Etc/GMT
Nov 20 17:33:13 com.obzerv.Experiments - firstDateInNextMonth 2012-12-01
04:00:00 Etc/GMT
and for another date that does not straddle the daylight change
Nov 20 17:35:21 com.obzerv.Experiments - ERXTimestampUtility
Nov 20 17:35:21 com.obzerv.Experiments - ERXTimestampUtility.monthOfYear = 6
<--- Wrong
Nov 20 17:35:21 com.obzerv.Experiments - ERXTimestampUtility.dayOfMonth = 13
Nov 20 17:35:21 com.obzerv.Experiments - ERXTimestampUtility.dayOfWeek = 6
Nov 20 17:35:21 com.obzerv.Experiments - ______________________________
Nov 20 17:35:21 com.obzerv.Experiments - ERXTimestampUtility inWonder
Nov 20 17:35:21 com.obzerv.Experiments - now 2012-07-13
18:12:45 Etc/GMT
Nov 20 17:35:21 com.obzerv.Experiments - firstDateInSameMonth 2012-05-19
04:00:00 Etc/GMT <--- Wrong
Nov 20 17:35:21 com.obzerv.Experiments - firstDateInSameWeek 2012-05-26
04:00:00 Etc/GMT <--- Wrong
Nov 20 17:35:21 com.obzerv.Experiments - firstDateInNextMonth 2012-06-19
04:00:00 Etc/GMT <--- Wrong
Nov 20 17:35:21 com.obzerv.Experiments - ______________________________
Nov 20 17:35:21 com.obzerv.Experiments - Proposed Patched Versions
Nov 20 17:35:21 com.obzerv.Experiments - now 2012-07-13
18:12:45 Etc/GMT
Nov 20 17:35:21 com.obzerv.Experiments - firstDateInSameMonth 2012-07-01
04:00:00 Etc/GMT
Nov 20 17:35:21 com.obzerv.Experiments - firstDateInSameWeek 2012-07-08
04:00:00 Etc/GMT
Nov 20 17:35:21 com.obzerv.Experiments - firstDateInNextMonth 2012-08-01
04:00:00 Etc/GMT
and here another case where the week start into another month
Nov 20 17:37:28 com.obzerv.Experiments - ERXTimestampUtility
Nov 20 17:37:28 com.obzerv.Experiments - ERXTimestampUtility.monthOfYear = 2
<--- Wow we are in november, 3 not 2 as for NSTimstamp
Nov 20 17:37:28 com.obzerv.Experiments - ERXTimestampUtility.dayOfMonth = 2
Nov 20 17:37:28 com.obzerv.Experiments - ERXTimestampUtility.dayOfWeek = 6
Nov 20 17:37:28 com.obzerv.Experiments - ______________________________
Nov 20 17:37:28 com.obzerv.Experiments - ERXTimestampUtility inWonder
Nov 20 17:37:28 com.obzerv.Experiments - now 2012-03-02
18:12:45 Etc/GMT
Nov 20 17:37:28 com.obzerv.Experiments - firstDateInSameMonth 2012-01-30
05:00:00 Etc/GMT <--- Wrong
Nov 20 17:37:28 com.obzerv.Experiments - firstDateInSameWeek 2012-01-26
05:00:00 Etc/GMT <--- Wrong
Nov 20 17:37:28 com.obzerv.Experiments - firstDateInNextMonth 2012-02-29
05:00:00 Etc/GMT <--- Wrong
Nov 20 17:37:28 com.obzerv.Experiments - ______________________________
Nov 20 17:37:28 com.obzerv.Experiments - Proposed Patched Versions
Nov 20 17:37:28 com.obzerv.Experiments - now 2012-03-02
18:12:45 Etc/GMT
Nov 20 17:37:28 com.obzerv.Experiments - firstDateInSameMonth 2012-03-01
05:00:00 Etc/GMT
Nov 20 17:37:28 com.obzerv.Experiments - firstDateInSameWeek 2012-02-26
05:00:00 Etc/GMT
Nov 20 17:37:28 com.obzerv.Experiments - firstDateInNextMonth 2012-04-01
05:00:00 Etc/GMT
So here are what I would propose
// First we should correct the offset by one (making month 1 based instead of 0
base)
public static int monthOfYear(NSTimestamp t) {
return 1 + calendarForTimestamp(t).get(Calendar.MONTH);
}
Then correct the faulty methods
public NSTimestamp firstDateInSameWeek(NSTimestamp value) {
return new NSTimestamp( ERXTimestampUtility.yearOfCommonEra(value),
ERXTimestampUtility.monthOfYear(value) ,
ERXTimestampUtility.dayOfMonth(value) -
ERXTimestampUtility.dayOfWeek(value) + 1,
0, 0, 0, NSTimeZone.defaultTimeZone()
);
}
public NSTimestamp firstDateInSameMonth(NSTimestamp value) {
return new NSTimestamp(ERXTimestampUtility.yearOfCommonEra(value),
ERXTimestampUtility.monthOfYear(value), 1, 0, 0, 0,
NSTimeZone.defaultTimeZone());
}
Cheers
Louis Demers eng.
Vice-President, Co-Founder
Obzerv Technologies Inc.
400 Jean Lesage, suite 201
Quebec, QC, Canada
G1K 8W1
T 418.524.3522
F 418.524.6745
www.obzerv.com
Louis Demers eng.
www.obzerv.com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]