Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / May 2006

Tip: Looking for answers? Try searching our database.

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

Thread view: 
rsujatha@gmail.com - 06 May 2006 11:14 GMT
Can anybody tell me how to find if a particular date I fetch from the
DB is a month end or not??
Jeroen V. - 06 May 2006 11:39 GMT
> 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
P.Hill - 09 May 2006 03:49 GMT
>> 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
Chris Uppal - 09 May 2006 09:37 GMT
> > 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
Lasse Reichstein Nielsen - 09 May 2006 20:54 GMT
>> 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
Signature

Lasse Reichstein Nielsen  -  lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
 'Faith without judgement merely degrades the spirit divine.'

Dale King - 15 May 2006 07:02 GMT
>> 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.
Signature

 Dale King

Rhino - 06 May 2006 13:51 GMT
> 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


P.Hill - 09 May 2006 03:50 GMT
>>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
VisionSet - 06 May 2006 14:11 GMT
> 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
P.Hill - 09 May 2006 04:11 GMT
>>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
Roedy Green - 06 May 2006 16:59 GMT
On 6 May 2006 03:14:30 -0700, "rsujatha@gmail.com"
<rsujatha@gmail.com> 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
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.