Avatar billede t_mons Nybegynder
17. november 2003 - 12:48 Der er 11 kommentarer og
1 løsning

Sidste dag i en måned

HEY

Jeg har brug for at man kan give mig den sidste dag i en måned udfra en given måned dvs.
indparameter er 2003-12
udparameter skal være 2003-12-31 00:00:00..

jeg føler at det er at opfinde den dybe tallerken igen, hvis man skulle splitte indparameteren op i år og måned for derfor at sætte år og måned på et kalendar obj.

Kan det laves smartere !! :o)

benytter mig af GregorianCalendar !!
Avatar billede vedikkebedre Nybegynder
17. november 2003 - 13:26 #1
Jeg vil nok forsøge med metoden getMaximum(int value) og se om ikke den kan modtage en måned som parameter!???

Har lige tid til at teste det; men det skulle virke

Mvh
vedikkebedre
Avatar billede arne_v Ekspert
17. november 2003 - 13:38 #2
import java.util.*;

public class Last {
    public static int lastDay(int y, int m) {
        Calendar c = new GregorianCalendar();
        c.set(Calendar.YEAR, y);
        c.set(Calendar.MONTH, m);
        c.set(Calendar.DATE, 1);
        c.add(Calendar.MONTH, 1);
        c.add(Calendar.DATE, -1);
        return c.get(Calendar.DAY_OF_MONTH);
    }
    public static void main(String[] args) {
        System.out.println(lastDay(2003,Calendar.OCTOBER));
        System.out.println(lastDay(2003,Calendar.NOVEMBER));
        System.out.println(lastDay(2003,Calendar.DECEMBER));
    }
}
Avatar billede t_mons Nybegynder
17. november 2003 - 14:30 #3
Hvorfor sætter man måned og date hvorefter man adder måned og date -1 ???
Avatar billede t_mons Nybegynder
17. november 2003 - 14:36 #4
String toDate(String week) throws ParseException
{
  String returnObj = "";
  String yyyy = week.substring(0,4);
  String ww = week.substring(week.indexOf("-")+1, week.length());
                                     
  int y = new Integer(yyyy).intValue();
  int m = new Integer(ww).intValue();
  Calendar c = new GregorianCalendar();
  c.set(Calendar.YEAR, y);
  c.set(Calendar.MONTH, m);
  c.set(Calendar.DATE, 1);
  c.add(Calendar.MONTH, 1);
  c.add(Calendar.DATE, -1);
  returnObj = c.get(Calendar.YEAR) +"-";
  returnObj= returnObj+ c.get(Calendar.MONTH)+ "-";
  returnObj= returnObj+ c.get(Calendar.DAY_OF_MONTH)+ "";

  return returnObj;
}


hvis week = 2003-11
er returnObj = 2003-11-31 - hvilket er en fejl !!!

Hvorfor  ??  :o)
Avatar billede arne_v Ekspert
17. november 2003 - 14:39 #5
november => 1. november
1. november + 1 måned = 1. december
1. december - 1 dag = 30. november
Avatar billede arne_v Ekspert
17. november 2003 - 14:44 #6
Måneder er ikke 1..12 men 0..11 !
Avatar billede arne_v Ekspert
17. november 2003 - 14:45 #7
String toDate(String week) throws ParseException
{
  String returnObj = "";
  String yyyy = week.substring(0,4);
  String ww = week.substring(week.indexOf("-")+1, week.length());
                                     
  int y = new Integer(yyyy).intValue();
  int m = new Integer(ww).intValue();
  Calendar c = new GregorianCalendar();
  c.set(Calendar.YEAR, y);
  c.set(Calendar.MONTH, m - 1);
  c.set(Calendar.DATE, 1);
  c.add(Calendar.MONTH, 1);
  c.add(Calendar.DATE, -1);
  returnObj = c.get(Calendar.YEAR) +"-";
  returnObj= returnObj+ (c.get(Calendar.MONTH)+1) + "-";
  returnObj= returnObj+ c.get(Calendar.DAY_OF_MONTH)+ "";

  return returnObj;
}
Avatar billede arne_v Ekspert
17. november 2003 - 14:46 #8
Jeg vil iøvrigt anbefale SimpleDateFormat til både parse og format !
Avatar billede t_mons Nybegynder
17. november 2003 - 14:50 #9
Hey arne..

Er ikke helt med - det dato halløj er sku svært... men det eksempel jeg har lavet udfra din model - retunere den forkerte dato, warum... :o(
som nævnt tidligere hvis indparam = en String ala 2003-11 retunere funktionen 2003-11-31....
mystisk
vil gerne give flere points..
Avatar billede t_mons Nybegynder
17. november 2003 - 14:51 #10
hov havde ikke helt set du havde svaret - sorry
Avatar billede arne_v Ekspert
17. november 2003 - 14:53 #11
Med SimpleDateFormat:

    private static DateFormat df1 = new SimpleDateFormat("yyyy-MM");
    private static DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
    public static String toDate(String week) throws ParseException {
        Calendar c = new GregorianCalendar();
        c.setTime(df1.parse(week));
        c.set(Calendar.DATE, 1);
        c.add(Calendar.MONTH, 1);
        c.add(Calendar.DATE, -1);
        return df2.format(c.getTime());
    }
Avatar billede t_mons Nybegynder
17. november 2003 - 14:55 #12
Hey Arne....  Jeg må tage hatten af for dig.. jeg takker mange gange..

mvh
t_mons
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester