×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




If you need the date to always be the month end date, you can simply do
below:
date1 = date1 + %month(1) - %days(%subdt(date1:*days))

I don't think you can do the samething in java.  Not on one statemnet
anyway.  I try to do it in two separate statement and get the same
result 3/28/06:
package myTest;

import java.util.*;

public class MyTest {

        public static void main(String[] args) {
                
                GregorianCalendar myDate = new GregorianCalendar(2006,
0, 31,0,0,0); 
                System.out.println(
                        "Year="+myDate.get(Calendar.YEAR)+';'+
                        "Month="+myDate.get(Calendar.MONTH)+';'+
                        "Day="+myDate.get(Calendar.DATE));
                        
                myDate.add(Calendar.MONTH, 1);
                System.out.println(
                        "Year="+myDate.get(Calendar.YEAR)+';'+
                        "Month="+myDate.get(Calendar.MONTH)+';'+
                        "Day="+myDate.get(Calendar.DATE));
                        
                myDate.add(Calendar.MONTH, 1);
                System.out.println(
                        "Year="+myDate.get(Calendar.YEAR)+';'+
                        "Month="+myDate.get(Calendar.MONTH)+';'+
                        "Day="+myDate.get(Calendar.DATE));
                System.exit(0);
        }
}

Below if the result when run above:
Year=2006;Month=0;Day=31
Year=2006;Month=1;Day=28
Year=2006;Month=2;Day=28

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of praveen gunda
Sent: Monday, March 27, 2006 3:36 PM
To: RPG programming on the AS400 / iSeries
Subject: Re: Bug in IBM Date Routies %month

I think IBM should have taken care of this, similar to how they have
taken care of this.

2006-01-31 + %months(1) = 2006--2-28

Also,
2006-01-31 + %months(2) should be consistent with 2006-01-31 +
%months(1) +
%months(1)

Adding 2 months or adding 1 month + 1 months should be same right?

I write a lot in Java, and have never came across such a problem.



On 3/27/06, Michael_Schutte@xxxxxxxxxxxx <Michael_Schutte@xxxxxxxxxxxx>
wrote:
>
> You get the same issue when you do it with the date of 3/31/2006 
> instead of
> 1/31/2006
>
> Michael Schutte
> Work 614-492-7419
> email  michael_schutte@xxxxxxxxxxxx
>
>
>
>              "Peter Dow (ML)"
>              <maillist@dowsoft
>              ware.com>
To
>              Sent by:                  RPG programming on the AS400 /
>              rpg400-l-bounces+         iSeries <rpg400-l@xxxxxxxxxxxx>
>              michael_schutte=b
cc
>              obevans.com@midra
>              nge.com
Subject
>                                        Re: Bug in IBM Date Routies 
> %month
>
>              03/27/2006 04:23
>              PM
>
>
>              Please respond to
>               RPG programming
>               on the AS400 /
>                   iSeries
>              <rpg400-l@midrang
>                   e.com>
>
>
>
>
>
>
> Hi Praveen,
>
> Actually, that's not a bug, it's a problem with intermediate values.
> When you add 1 month to 2006-01-31, what do you get?  2006-02-31 is 
> not a valid date; instead you get 2006-02-28 (see the manual).  When 
> you then add 1 month to that, you get 2006-03-28.  Date arithmetic is 
> tricky...
>
> hth,
>
> Peter Dow
> Dow Software Services, Inc.
> 909 793-9050
>
> praveen gunda wrote:
> > I found the following bug with IBM Date rountines... Was there a fix

> > for this?
> >
> >
> >      Ddate1            s               d   datfmt(*ymd)
> >       /Free
> >        cymd = 20060131;
> >        date1 = %date(cymd:*ISO);
> >        dsply %char( (date1+%months(2)):*iso );
> >        dsply %char( (date1+%months(1)+%months(1)) :*iso);
> >      /End-Free
> >
> >
> > Heres' the output:
> >
> >  DSPLY  2006-03-31
> >  DSPLY  2006-03-28
> >
> > Shouldn't it be 2006-03-31 both the times.
> >
>
> --
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing 
> list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, 
> unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a 
> moment to review the archives at http://archive.midrange.com/rpg400-l.
>
>
>
> --
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing 
> list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, 
> unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a 
> moment to review the archives at http://archive.midrange.com/rpg400-l.
>
>
--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/rpg400-l.



This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2026 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.