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]

Reply via email to