Finding is a given date is a month end date??

Discussion in 'Java' started by rsujatha@gmail.com, May 6, 2006.

  1. Guest

    Can anybody tell me how to find if a particular date I fetch from the
    DB is a month end or not??
     
    , May 6, 2006
    #1
    1. Advertising

  2. Jeroen V. Guest

    wrote:
    > Can anybody tell me how to find if a particular date I fetch from the
    > DB is a month end or not??
    >


    You could add 1000*60*60*24 milliseconds to the date (see
    java.util.GregorianCalendar) and check whether the month value has
    changed after that.

    Jeroen
     
    Jeroen V., May 6, 2006
    #2
    1. Advertising

  3. Rhino Guest

    <> wrote in message
    news:...
    > Can anybody tell me how to find if a particular date I fetch from the
    > DB is a month end or not??
    >

    Assuming you're using a western calendar, the exact length of the months is
    very well known: April, June, September and November always have 30 days;
    February has 28 days except when it is a leap year, in which case it has 29
    days; all the remaining months always have 31 days. You can easily write a
    method to determine if a given date goes beyond the end of a month; I've
    done it in 4 or 5 languages over the years, including Java.

    Remember, the rule for leap years is that is the year is a multiple of 100,
    e.g. 1700, 1800, 1900, 2000, the year is only a leap year if the entire year
    is evenly divisible by 400. Therefore, 1700, 1800, and 1900 are NOT leap
    years but 2000 IS a leap year. If the year is NOT a multiple of 100, e.g.
    2004, it IS a leap year if it is evenly divisible by 4.

    --
    Rhino
     
    Rhino, May 6, 2006
    #3
  4. VisionSet Guest

    <> wrote in message
    news:...
    > Can anybody tell me how to find if a particular date I fetch from the
    > DB is a month end or not??


    I would wrap a GregorianCalendar in my own utility class and have methods
    that determine that by setting the calendar to the correct month:

    private GregorianCalendar calendar = new GregorianCalendar();
    // or instantiate with locale/timezone specifing version

    public int getMaxDayInMonthofDate(Date myDate) {

    synchronized (calendar) {
    calendar.setTime(myDate); // instance of Date
    int maxDayInMyDatesMonth = calendar.getActualMaximum();
    }
    return maxDayInMyDatesMonth;
    }

    --
    Mike W
     
    VisionSet, May 6, 2006
    #4
  5. Roedy Green Guest

    On 6 May 2006 03:14:30 -0700, ""
    <> wrote, quoted or indirectly quoted someone who
    said :

    >Can anybody tell me how to find if a particular date I fetch from the
    >DB is a month end or not??


    The direct way is to use two tables of month lengths selected by
    isLeap( yyyy ). and compare dd with that entry.

    With BigDate you could use d.addDays(1) then check if d.getMM() == 1.

    see http://mindprod.com/jgloss/bigdate.html
    --
    Canadian Mind Products, Roedy Green.
    http://mindprod.com Java custom programming, consulting and coaching.
     
    Roedy Green, May 6, 2006
    #5
  6. P.Hill Guest

    Jeroen V. wrote:
    > wrote:
    >
    >> Can anybody tell me how to find if a particular date I fetch from the
    >> DB is a month end or not??
    >>

    >
    > You could add 1000*60*60*24 milliseconds to the date (see
    > java.util.GregorianCalendar) and check whether the month value has
    > changed after that.


    Except in timezones which include Daylight savings where there is
    one day which is 23 hours long.

    -Paul
     
    P.Hill, May 9, 2006
    #6
  7. P.Hill Guest

    Rhino wrote:
    > <> wrote in message
    > news:...
    >
    >>Can anybody tell me how to find if a particular date I fetch from the
    >>DB is a month end or not??
    >>

    >
    > Assuming you're using a western calendar, the exact length of the months is
    > very well known:


    Sure, so well known it is already contained in the
    java.util.GregorianCalendar class, so forget the rules, the software
    already knows them :)

    -Paul
     
    P.Hill, May 9, 2006
    #7
  8. P.Hill Guest

    VisionSet wrote:
    > <> wrote in message
    > news:...
    >
    >>Can anybody tell me how to find if a particular date I fetch from the
    >>DB is a month end or not??

    >
    >
    > I would wrap a GregorianCalendar in my own utility class and have methods
    > that determine that by setting the calendar to the correct month:


    I would go further and subclass GregorianCalendar
    since having an easy bit of API to know that a date currently in
    the Calendad (probably pushed in via setDate(Date) is the end of
    the month might be just what I need for this application.

    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;

    public class MyCal extends GregorianCalendar {
    public boolean isLastDay(Date myDate) {
    return
    getActualMaximum(Calendar.MONTH) == get(Calendar.DAY_OF_MONTH);
    }
    }

    OO can be a useful, if not beautiful, thing.

    -Paul
     
    P.Hill, May 9, 2006
    #8
  9. Chris Uppal Guest

    P.Hill wrote:

    > > You could add 1000*60*60*24 milliseconds to the date (see
    > > java.util.GregorianCalendar) and check whether the month value has
    > > changed after that.

    >
    > Except in timezones which include Daylight savings where there is
    > one day which is 23 hours long.


    Nitpick: The one that's 25 hours long would be more of a problem.

    -- chris
     
    Chris Uppal, May 9, 2006
    #9
  10. "P.Hill" <> writes:

    > Jeroen V. wrote:
    >> You could add 1000*60*60*24 milliseconds to the date (see
    >> java.util.GregorianCalendar) and check whether the month value has
    >> changed after that.

    >
    > Except in timezones which include Daylight savings where there is
    > one day which is 23 hours long.


    Luckily, it's not at the beginning or end of a month, so it won't
    change the result in this case.

    It's still much safer to add on to the date in a lenient calendar.
    Seeing 1000*60*60*24 (or 864E5) is reason to worry in most cases.

    /L
    --
    Lasse Reichstein Nielsen -
    DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
    'Faith without judgement merely degrades the spirit divine.'
     
    Lasse Reichstein Nielsen, May 9, 2006
    #10
  11. Dale King Guest

    Lasse Reichstein Nielsen wrote:
    > "P.Hill" <> writes:
    >
    >> Except in timezones which include Daylight savings where there is
    >> one day which is 23 hours long.

    >
    > Luckily, it's not at the beginning or end of a month, so it won't
    > change the result in this case.


    Actually they can and have been at the beginning and end of the month.
    In the US DST would start on April 1st next year except that last year
    the date was moved back to the second Sunday of March. It did occur on
    April 1st back in 2001.

    DST ended on October 31st back in 2004, but under the new law DST now
    runs through the first Sunday of November which means it can end on
    November 1st now.

    Don't know if this affects the answer, but the statement that DST
    doesn't change at the beginning and end of the month is not true.

    P.S. I live in Indiana and this is my first year actually participating
    in DST.
    --
    Dale King
     
    Dale King, May 15, 2006
    #11
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?Q3NoYXJwR3V5?=

    month end date

    =?Utf-8?B?Q3NoYXJwR3V5?=, Mar 1, 2006, in forum: ASP .Net
    Replies:
    6
    Views:
    4,979
    Brooke
    Mar 1, 2006
  2. Lord0
    Replies:
    1
    Views:
    573
    Thomas Weidenfeller
    Apr 19, 2006
  3. Replies:
    1
    Views:
    451
    Steve W. Jackson
    Dec 22, 2006
  4. Mufasa
    Replies:
    0
    Views:
    402
    Mufasa
    Sep 5, 2008
  5. Edward
    Replies:
    3
    Views:
    184
    Gunnar Hjalmarsson
    Sep 8, 2004
Loading...

Share This Page