J'utilise la classe BigDate http://mindprod.compour la gestion d'un
calendrier, notament pour obtenir la premiere semaine d'un mois.
J'ai un comportement bizarre sur la premiere semaine de l'ann=E9e 2006,
la classe me trouve la semaine 200552, au lieu de 200601 ?
Ou est mon erreur ?
Cordialement
Philippe
/***
*
* FOR FRENCH CALENDAR
*
* @mindprod.com
* roedy@telus.net
* roedy@mindprod.com
*/
public class Class1 {
public Class1() {
}
public static void main(String[] args) {
Class1 class1 =3D new Class1();
String dbper=3Dnew String("200601");
System.out.println("getFirstWeekFromMonth01 "+dbper);
String tempd=3Dnew String("");
if(dbper!=3Dnull && dbper.length()=3D=3D6)
{
int year=3DInteger.parseInt(dbper.substring(0,4)); // Annee
int month=3DInteger.parseInt(dbper.substring(4,6));
BigDate d =3D new BigDate(year,month,1);
System.out.println("getFirstWeekFromMonth02
"+d.getISOWeekNumber()); //First Week in January is 01 and not 52 ???
}
}
=20
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
pcouas
je crois que j'ai trouve c'est "+d.getWeekNumber(); a utiliser au lieu de d.getISOWeekNumber();
Bonjour
J'utilise la classe BigDate http://mindprod.compour la gestion d'un calendrier, notament pour obtenir la premiere semaine d'un mois. J'ai un comportement bizarre sur la premiere semaine de l'année 2006, la classe me trouve la semaine 200552, au lieu de 200601 ?
Ou est mon erreur ? Cordialement Philippe
/*** * * FOR FRENCH CALENDAR * * @mindprod.com * * */ public class Class1 { public Class1() { }
public static void main(String[] args) { Class1 class1 = new Class1(); String dbper=new String("200601");
System.out.println("getFirstWeekFromMonth01 "+dbper); String tempd=new String(""); if(dbper!=null && dbper.length()==6) { int year=Integer.parseInt(dbper.substring(0,4)); // Annee int month=Integer.parseInt(dbper.substring(4,6)); BigDate d = new BigDate(year,month,1); System.out.println("getFirstWeekFromMonth02 "+d.getISOWeekNumber()); //First Week in January is 01 and not 52 ??? } }
}
je crois que j'ai trouve c'est "+d.getWeekNumber(); a utiliser au lieu
de d.getISOWeekNumber();
Bonjour
J'utilise la classe BigDate http://mindprod.compour la gestion d'un
calendrier, notament pour obtenir la premiere semaine d'un mois.
J'ai un comportement bizarre sur la premiere semaine de l'année 2006,
la classe me trouve la semaine 200552, au lieu de 200601 ?
Ou est mon erreur ?
Cordialement
Philippe
/***
*
* FOR FRENCH CALENDAR
*
* @mindprod.com
* roedy@telus.net
* roedy@mindprod.com
*/
public class Class1 {
public Class1() {
}
public static void main(String[] args) {
Class1 class1 = new Class1();
String dbper=new String("200601");
System.out.println("getFirstWeekFromMonth01 "+dbper);
String tempd=new String("");
if(dbper!=null && dbper.length()==6)
{
int year=Integer.parseInt(dbper.substring(0,4)); // Annee
int month=Integer.parseInt(dbper.substring(4,6));
BigDate d = new BigDate(year,month,1);
System.out.println("getFirstWeekFromMonth02
"+d.getISOWeekNumber()); //First Week in January is 01 and not 52 ???
}
}
je crois que j'ai trouve c'est "+d.getWeekNumber(); a utiliser au lieu de d.getISOWeekNumber();
Bonjour
J'utilise la classe BigDate http://mindprod.compour la gestion d'un calendrier, notament pour obtenir la premiere semaine d'un mois. J'ai un comportement bizarre sur la premiere semaine de l'année 2006, la classe me trouve la semaine 200552, au lieu de 200601 ?
Ou est mon erreur ? Cordialement Philippe
/*** * * FOR FRENCH CALENDAR * * @mindprod.com * * */ public class Class1 { public Class1() { }
public static void main(String[] args) { Class1 class1 = new Class1(); String dbper=new String("200601");
System.out.println("getFirstWeekFromMonth01 "+dbper); String tempd=new String(""); if(dbper!=null && dbper.length()==6) { int year=Integer.parseInt(dbper.substring(0,4)); // Annee int month=Integer.parseInt(dbper.substring(4,6)); BigDate d = new BigDate(year,month,1); System.out.println("getFirstWeekFromMonth02 "+d.getISOWeekNumber()); //First Week in January is 01 and not 52 ??? } }
}
TestMan
Bonjour
J'utilise la classe BigDate http://mindprod.compour la gestion d'un calendrier, notament pour obtenir la premiere semaine d'un mois. J'ai un comportement bizarre sur la premiere semaine de l'année 2006, la classe me trouve la semaine 200552, au lieu de 200601 ?
Ou est mon erreur ? Cordialement Philippe
Pas d'erreur, même le code utilisant directement le Calendar :
public static void main(String[] args) throws ParseException { Calendar cal = Calendar.getInstance(Locale.FRANCE); SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); Date period = format.parse("200601"); cal.setTime(period); System.out.println("Semaine:"+cal.get(Calendar.WEEK_OF_YEAR)); }
Retourne aussi 52 en Locale FRANCE, mais si tu passes en Locale.US tu obtiendras 1 !
La raison est qu'en France le premier jour de la semaine est un Lundi (contrairement aux US ou c'est le dimanche).
Or le premier jour de 2006 est un dimanche, et la semaine correspondante à ce dimanche à débutéele 26 décembre 2005 qui est bien la 52e semaine de son année.
Surprenant, mais exact si l'on en croit le test sur : http://personal.ecu.edu/mccartyr/isowdcal.html
A+ TM
Bonjour
J'utilise la classe BigDate http://mindprod.compour la gestion d'un
calendrier, notament pour obtenir la premiere semaine d'un mois.
J'ai un comportement bizarre sur la premiere semaine de l'année 2006,
la classe me trouve la semaine 200552, au lieu de 200601 ?
Ou est mon erreur ?
Cordialement
Philippe
Pas d'erreur, même le code utilisant directement le Calendar :
public static void main(String[] args) throws ParseException {
Calendar cal = Calendar.getInstance(Locale.FRANCE);
SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
Date period = format.parse("200601");
cal.setTime(period);
System.out.println("Semaine:"+cal.get(Calendar.WEEK_OF_YEAR));
}
Retourne aussi 52 en Locale FRANCE, mais si tu passes en Locale.US tu
obtiendras 1 !
La raison est qu'en France le premier jour de la semaine est un Lundi
(contrairement aux US ou c'est le dimanche).
Or le premier jour de 2006 est un dimanche, et la semaine correspondante
à ce dimanche à débutéele 26 décembre 2005 qui est bien la 52e semaine
de son année.
Surprenant, mais exact si l'on en croit le test sur :
http://personal.ecu.edu/mccartyr/isowdcal.html
J'utilise la classe BigDate http://mindprod.compour la gestion d'un calendrier, notament pour obtenir la premiere semaine d'un mois. J'ai un comportement bizarre sur la premiere semaine de l'année 2006, la classe me trouve la semaine 200552, au lieu de 200601 ?
Ou est mon erreur ? Cordialement Philippe
Pas d'erreur, même le code utilisant directement le Calendar :
public static void main(String[] args) throws ParseException { Calendar cal = Calendar.getInstance(Locale.FRANCE); SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); Date period = format.parse("200601"); cal.setTime(period); System.out.println("Semaine:"+cal.get(Calendar.WEEK_OF_YEAR)); }
Retourne aussi 52 en Locale FRANCE, mais si tu passes en Locale.US tu obtiendras 1 !
La raison est qu'en France le premier jour de la semaine est un Lundi (contrairement aux US ou c'est le dimanche).
Or le premier jour de 2006 est un dimanche, et la semaine correspondante à ce dimanche à débutéele 26 décembre 2005 qui est bien la 52e semaine de son année.
Surprenant, mais exact si l'on en croit le test sur : http://personal.ecu.edu/mccartyr/isowdcal.html
A+ TM
pcouas
Ok,
et pour mon appli qui doit etre internationale, et donc avec des seveurs Francais et etranger, quel est le mieux LOCALE.US tout le temps ? LOCALE.FRANCE et cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi Ou il y a t il une autre solution ?
Cordialement Philippe
Ok,
et pour mon appli qui doit etre internationale, et donc avec des
seveurs Francais et etranger, quel est le mieux
LOCALE.US tout le temps ?
LOCALE.FRANCE et cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi
Ou il y a t il une autre solution ?
et pour mon appli qui doit etre internationale, et donc avec des seveurs Francais et etranger, quel est le mieux LOCALE.US tout le temps ? LOCALE.FRANCE et cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi Ou il y a t il une autre solution ?
Cordialement Philippe
TestMan
Ok,
et pour mon appli qui doit etre internationale, et donc avec des seveurs Francais et etranger, quel est le mieux LOCALE.US tout le temps ? LOCALE.FRANCE et cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi Ou il y a t il une autre solution ?
Cordialement Philippe
Pour une appli client :
Calendar.getInstance()
Pour une appli serveur :
Calendar.getInstance(request.getLocale())
Comme celà, le calendrier sera calquée sur les habitude du client et les comportements ISO ...
Si tu veut ensuite trouver "le premier jour de la semaine du mois courrant" en plus du code donné il te faudra ajouté :
Qui pour janvier 2006 est le 1 janvier aux US mais le 2 janvier en France ...
A+ TM
Ok,
et pour mon appli qui doit etre internationale, et donc avec des
seveurs Francais et etranger, quel est le mieux
LOCALE.US tout le temps ?
LOCALE.FRANCE et cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi
Ou il y a t il une autre solution ?
Cordialement
Philippe
Pour une appli client :
Calendar.getInstance()
Pour une appli serveur :
Calendar.getInstance(request.getLocale())
Comme celà, le calendrier sera calquée sur les habitude du client et les
comportements ISO ...
Si tu veut ensuite trouver "le premier jour de la semaine du mois
courrant" en plus du code donné il te faudra ajouté :
et pour mon appli qui doit etre internationale, et donc avec des seveurs Francais et etranger, quel est le mieux LOCALE.US tout le temps ? LOCALE.FRANCE et cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi Ou il y a t il une autre solution ?
Cordialement Philippe
Pour une appli client :
Calendar.getInstance()
Pour une appli serveur :
Calendar.getInstance(request.getLocale())
Comme celà, le calendrier sera calquée sur les habitude du client et les comportements ISO ...
Si tu veut ensuite trouver "le premier jour de la semaine du mois courrant" en plus du code donné il te faudra ajouté :
Si je met la ligne cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi 4,3 j'ai bien le 26 Janvier, si je ne la positionne pas j'ai le 19 Janvier
Bonsoir,
Vérifiéz que vous avez bien une version qui a corrigé : http://bugs.sun.com/bugdatabase/view_bug.do?bug_idI60215 La 1.5.0 ou 1.6.1rc l'ont de corrigé ....
Si vous voulez le "premier jour" de la "premiere semaine" tel que définit par le système il faut coder :
Date getFirstDayFromFirstWeekOf(Date period, Locale locale){ final Calendar cal = Calendar.getInstance(locale); cal.setTime(period); cal.set(Calendar.WEEK_OF_MONTH,1); cal.set(Calendar.DAY_OF_WEEK,cal.getFirstDayOfWeek()); return cal.getTime(); }
Celà marche et te retournera ce qui est conforme à la norme ISO 8601.
Si vous voulez le "premier jour" de la "premiere semaine qui a 7 jours dans le même mois" tu peux coder :
Date getFirstDayFromFirstWeekOf(Date period, Locale locale){ final Calendar cal = Calendar.getInstance(locale); cal.setMinimalDaysInFirstWeek(7); cal.setTime(period); cal.set(Calendar.WEEK_OF_MONTH,1); cal.set(Calendar.DAY_OF_WEEK,cal.getFirstDayOfWeek()); return cal.getTime(); }
Celà s'adaptera automatiquement aux réglements du pays en vigueur ... Par exemple le fait que getMinimalDaysInFirstWeek() soit de 4 pour la FRANCE et 1 pour les US
Un peu de lecture : http://www.techno-science.net/index.php?onglet=glossaire&definition075
Qqn aurait vu un Calendar "calendrier révolutionaire" qqe part ?
On peu espérer qu'avec la mise sous GPL, des projets type http://icu.sourceforge.net/apiref/icu4j/ choisissent d'intégrer leur code dans le RI ...
A+ TM
Par contre sur un serveur Francais c'est problematique
Calendar cal3 = new GregorianCalendar(Locale.FRANCE);
week2;
cal3 = Calendar.getInstance(Locale.FRANCE);
cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi 4,3
cal3.set(cal3.YEAR,2006); // Annee
cal3.set(cal3.WEEK_OF_YEAR,week2) ;
Si je met la ligne cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi 4,3
j'ai bien le 26 Janvier, si je ne la positionne pas j'ai le 19 Janvier
Bonsoir,
Vérifiéz que vous avez bien une version qui a corrigé :
http://bugs.sun.com/bugdatabase/view_bug.do?bug_idI60215
La 1.5.0 ou 1.6.1rc l'ont de corrigé ....
Si vous voulez le "premier jour" de la "premiere semaine" tel que
définit par le système il faut coder :
Date getFirstDayFromFirstWeekOf(Date period, Locale locale){
final Calendar cal = Calendar.getInstance(locale);
cal.setTime(period);
cal.set(Calendar.WEEK_OF_MONTH,1);
cal.set(Calendar.DAY_OF_WEEK,cal.getFirstDayOfWeek());
return cal.getTime();
}
Celà marche et te retournera ce qui est conforme à la norme ISO 8601.
Si vous voulez le "premier jour" de la "premiere semaine qui a 7 jours
dans le même mois" tu peux coder :
Date getFirstDayFromFirstWeekOf(Date period, Locale locale){
final Calendar cal = Calendar.getInstance(locale);
cal.setMinimalDaysInFirstWeek(7);
cal.setTime(period);
cal.set(Calendar.WEEK_OF_MONTH,1);
cal.set(Calendar.DAY_OF_WEEK,cal.getFirstDayOfWeek());
return cal.getTime();
}
Celà s'adaptera automatiquement aux réglements du pays en vigueur ...
Par exemple le fait que getMinimalDaysInFirstWeek() soit de 4 pour la
FRANCE et 1 pour les US
Un peu de lecture :
http://www.techno-science.net/index.php?onglet=glossaire&definition075
Qqn aurait vu un Calendar "calendrier révolutionaire" qqe part ?
On peu espérer qu'avec la mise sous GPL, des projets type
http://icu.sourceforge.net/apiref/icu4j/ choisissent d'intégrer leur
code dans le RI ...
Si je met la ligne cal3.setMinimalDaysInFirstWeek(4); // Le Jeudi 4,3 j'ai bien le 26 Janvier, si je ne la positionne pas j'ai le 19 Janvier
Bonsoir,
Vérifiéz que vous avez bien une version qui a corrigé : http://bugs.sun.com/bugdatabase/view_bug.do?bug_idI60215 La 1.5.0 ou 1.6.1rc l'ont de corrigé ....
Si vous voulez le "premier jour" de la "premiere semaine" tel que définit par le système il faut coder :
Date getFirstDayFromFirstWeekOf(Date period, Locale locale){ final Calendar cal = Calendar.getInstance(locale); cal.setTime(period); cal.set(Calendar.WEEK_OF_MONTH,1); cal.set(Calendar.DAY_OF_WEEK,cal.getFirstDayOfWeek()); return cal.getTime(); }
Celà marche et te retournera ce qui est conforme à la norme ISO 8601.
Si vous voulez le "premier jour" de la "premiere semaine qui a 7 jours dans le même mois" tu peux coder :
Date getFirstDayFromFirstWeekOf(Date period, Locale locale){ final Calendar cal = Calendar.getInstance(locale); cal.setMinimalDaysInFirstWeek(7); cal.setTime(period); cal.set(Calendar.WEEK_OF_MONTH,1); cal.set(Calendar.DAY_OF_WEEK,cal.getFirstDayOfWeek()); return cal.getTime(); }
Celà s'adaptera automatiquement aux réglements du pays en vigueur ... Par exemple le fait que getMinimalDaysInFirstWeek() soit de 4 pour la FRANCE et 1 pour les US
Un peu de lecture : http://www.techno-science.net/index.php?onglet=glossaire&definition075
Qqn aurait vu un Calendar "calendrier révolutionaire" qqe part ?
On peu espérer qu'avec la mise sous GPL, des projets type http://icu.sourceforge.net/apiref/icu4j/ choisissent d'intégrer leur code dans le RI ...
A+ TM
pcouas
Aie ! sur les Linux c'est une 1.4.2, et sur les serveur AIX4.3.3 c'est du JDK 1.3.1
Merci pour l'info
Aie ! sur les Linux c'est une 1.4.2, et sur les serveur AIX4.3.3 c'est
du JDK 1.3.1
Aie ! sur les Linux c'est une 1.4.2, et sur les serveur AIX4.3.3 c'est du JDK 1.3.1
Merci pour l'info
TestMan
Aie ! sur les Linux c'est une 1.4.2, et sur les serveur AIX4.3.3 c'est du JDK 1.3.1
Merci pour l'info
Aie ... AIX, condoléance :( et en 1.3.1 :(( Un JDK1.5 lui ferait du bien car la fin du support par IBM du 1.3.1 est annoncée pour le 30/09/2007 ! Attention à pas vous trouvé bloqué ...
Coté tux, franchement du 1.4.2 alors que le 1.6 va sortir ! Vous exagérez ;-) Il est vraiment temps que vous planifiez les mise à jour les tux.
Je sais bien que les admin n'aime pas les mise à jour : "tant que ça marche". Surtout quand ce sont des OS payants :(
Bon code à toi... A+ TM
Aie ! sur les Linux c'est une 1.4.2, et sur les serveur AIX4.3.3 c'est
du JDK 1.3.1
Merci pour l'info
Aie ... AIX, condoléance :( et en 1.3.1 :((
Un JDK1.5 lui ferait du bien car la fin du support par IBM du 1.3.1 est
annoncée pour le 30/09/2007 ! Attention à pas vous trouvé bloqué ...
Coté tux, franchement du 1.4.2 alors que le 1.6 va sortir ! Vous
exagérez ;-) Il est vraiment temps que vous planifiez les mise à jour
les tux.
Je sais bien que les admin n'aime pas les mise à jour : "tant que ça
marche". Surtout quand ce sont des OS payants :(
Aie ! sur les Linux c'est une 1.4.2, et sur les serveur AIX4.3.3 c'est du JDK 1.3.1
Merci pour l'info
Aie ... AIX, condoléance :( et en 1.3.1 :(( Un JDK1.5 lui ferait du bien car la fin du support par IBM du 1.3.1 est annoncée pour le 30/09/2007 ! Attention à pas vous trouvé bloqué ...
Coté tux, franchement du 1.4.2 alors que le 1.6 va sortir ! Vous exagérez ;-) Il est vraiment temps que vous planifiez les mise à jour les tux.
Je sais bien que les admin n'aime pas les mise à jour : "tant que ça marche". Surtout quand ce sont des OS payants :(