Les utilisateurs peuvent personnaliser et imprimer le calendrier d'une année donnée, c'est-à-dire imprimer tout le calendrier d'une année donnée.
Par exemple, imprimez le calendrier 2013 comme suit :
Février 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28
Mars 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28 29 30
avril 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
2 3 4 5 6
8 9 10 11 12 13
15 16 17 18 19 20
22 23 24 25 26 27
29 30
mai 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
2 3 4
6 7 8 9 10 11
13 14 15 16 17 18
20 21 22 23 24 25
27 28 29 30 31
juin 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
3 4 5 6 7 8
10 11 12 13 14 15
17 18 19 20 21 22
24 25 26 27 28 29
juillet 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
2 3 4 5 6
8 9 10 11 12 13
15 16 17 18 19 20
22 23 24 25 26 27
29 30 31
Août 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
vingt-trois
5 6 7 8 9 10
12 13 14 15 16 17
19 20 21 22 23 24
26 27 28 29 30 31
septembre 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
2 3 4 5 6 7
9 10 11 12 13 14
16 17 18 19 20 21
23 24 25 26 27 28
30
Octobre 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
2 3 4 5
7 8 9 10 11 12
14 15 16 17 18 19
21 22 23 24 25 26
28 29 30 31
novembre 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
2
4 5 6 7 8 9
11 12 13 14 15 16
18 19 20 21 22 23
25 26 27 28 29 30
décembre 2013
---------------------------------------------
Dim Lun Mar Mer Jeu Ven Sam
2 3 4 5 6 7
9 10 11 12 13 14
16 17 18 19 20 21
23 24 25 26 27 28
30 31
Comme l'impression : Calendrier pour janvier 2014
Nous sommes aujourd’hui : 2013-04-27, puis le calendrier du mois en cours s’imprime comme suit :
Entrez maintenant la partie code :
=================================================== ======
Partie codée :
=================================================== ======
/UUUUUU_Test/src/com/b510/date/HongtenDate.java
importer java.text.SimpleDateFormat ;
importer java.util.Calendar ;
importer java.util.Date ;
importer java.util.GregorianCalendar ;
/**
* Une classe de traitement de date Dans cette classe, le constructeur <code>HongtenDate()</code> définira l'année sur l'année en cours par défaut<br>
* Et <code>HongtenDate(int year)</code>, vous pouvez personnaliser l'année<br>
*
* <pré>
* Date HongtenDate = new HongtenDate();
* </pre>
*
* ou<br>
*
* <pré>
* HongtenDate hd = nouveau HongtenDate (2014) ;
* </pre>
*
* Appelez <code>printCalendar()</code> pour imprimer la date de l'année<br>
* Appelez <code>printCurrentMonth()</code> pour imprimer la date du mois en cours<br>
* bien sûr, vous pouvez aussi appeler<br>
* <code>printMonthOfYear()</code>Définissez un paramètre pour imprimer la date d'un certain mois<br>
*Voici quelques plans de référence :<br>
*
* <pré>
* // Aucun paramètre, le système par défaut est l'année en cours
* Date HongtenDate = new HongtenDate();
* date.printCalendar();
* date.printCurrentMonth();
* date.printMonthOfYear(4);
* </pre>
*
* ou<br>
*
* <pré>
* // Réglé sur 2014
* HongtenDate hd = nouveau HongtenDate (2014) ;
* hd.printCurrentMonth();
* hd.printMonthOfYear(1);
* </pre>
*
* @date 2013-4-27
* @auteur Hongten
*
*/
classe publique HongtenDate {
//MOIS
// =============================================
public static final String JANVIER = "Janvier";
public static final String FEBUARY = "Février";
public static final String MARCH = "Mars";
public static final String APRIL = "Avril";
public static final String MAY = "Mai";
public static final String JUN = "Jun";
public static final String JULY = "Juillet";
public static final String AUGUST = "Août";
public static final String SEPTERMBER = "Septembre";
public static final String OCTOBRE = "Octobre";
public static final String NOVEMBER = "Novembre";
public static final String DÉCEMBRE = "Décembre";
/**
* année
*/
année entière privée ;
/**
* Le jour de la semaine du 1er janvier (ex : 2013-01-01-->Mardi, donc <code>whatDayOnJanuaryOne = 2;</code>)
*/
private int whatDayOnJanuaryOne ;
// principal
// ======================================
public static void main (String[] args) lève une exception {
// Aucun paramètre, le système par défaut est l'année en cours
Date HongtenDate = new HongtenDate();
//date.printCalendar();
date.printCurrentMonth();
// date.printMonthOfYear(4);
// Réglé sur 2014
HongtenDate hd = nouveau HongtenDate (2014) ;
// hd.printCurrentMonth();
// hd.printMonthOfYear(1);
}
// Aucun paramètre, le système par défaut est l'année en cours
public HongtenDate() {
Calendrier cal = Calendrier.getInstance();
cette.année = cal.get(Calendar.YEAR);
essayer {
setWhatDayOnJanuaryOne(getJanuaryOne(année));
} attraper (Exception e) {
e.printStackTrace();
}
}
//Avec paramètres, définissez l'année
public HongtenDate (année int) {
cette.année = année ;
essayer {
setWhatDayOnJanuaryOne(getJanuaryOne(année));
} attraper (Exception e) {
e.printStackTrace();
}
}
/**
* Imprimer toutes les dates d'un certain mois
*
* @parammon
* mois
* @throwsException
*/
public void printMonthOfYear(int mon) lève une exception {
si (lun < 1 || lun > 12) {
System.out.println("Le mois que vous avez saisi [" + mon + "] est erroné, veuillez vérifier en cours....");
retour;
}
GregorianCalendar maintenant = new GregorianCalendar();
//Obtenir un objet Date
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj");
Date date = sdf.parse(année + "-" + mon + "-01");
//Définit l'heure actuelle
maintenant.setTime(date);
// Récupère le mois en cours à partir de la date
int mois = maintenant.get(Calendar.MONTH);
// Fixe la date du moment à 1
maintenant.set(Calendar.DAY_OF_MONTH, 1);
// Obtenez le jour de la semaine maintenant
int week = now.get(Calendar.DAY_OF_WEEK);
//Imprimer l'étiquette d'en-tête du calendrier
System.out.println("日/t一/t二/t三/t四/t五/t六");
//Imprime l'espace avant la date actuelle
pour (int i = Calendar.SUNDAY; i < semaine; i++) {
System.out.print("/t");
}
//Imprimer le corps du calendrier
while (now.get(Calendar.MONTH) == mois) {
int jour = maintenant.get(Calendar.DAY_OF_MONTH);
// Alignez le calendrier de sortie, ajoutez un espace s'il est inférieur à 10
si (jour < 10) {
System.out.print(" " + jour + "/t");
} autre {
System.out.print("" + jour + "/t");
}
// Si c'est samedi, termine la ligne
if (semaine == Calendrier.SATURDAY) {
System.out.println();
}
// Chaque fois que la date est affichée, ajoutez un jour à la date
maintenant.add(Calendar.DAY_OF_MONTH, 1);
// Récupère le jour de la semaine
semaine = maintenant.get(Calendar.DAY_OF_WEEK);
}
}
/**
* Imprime toutes les dates du mois en cours, cela ne changera pas en fonction de l'année définie par l'utilisateur
*/
public void printCurrentMonth() {
GregorianCalendar maintenant = new GregorianCalendar();
//Obtenir un objet Date
Date date = nouvelle Date();
//Définit l'heure actuelle
maintenant.setTime(date);
//Obtenir le jour actuel à partir de la date
int toDay = now.get(Calendar.DAY_OF_MONTH);
// Récupère le mois en cours à partir de la date
int mois = maintenant.get(Calendar.MONTH);
// Fixe la date du moment à 1
maintenant.set(Calendar.DAY_OF_MONTH, 1);
// Obtenez le jour de la semaine maintenant
int week = now.get(Calendar.DAY_OF_WEEK);
//Imprimer l'étiquette d'en-tête du calendrier
System.out.println("日/t一/t二/t三/t四/t五/t六");
//Imprime l'espace avant la date actuelle
pour (int i = Calendar.SUNDAY; i < semaine; i++) {
System.out.print("/t");
}
//Imprimer le corps du calendrier
while (now.get(Calendar.MONTH) == mois) {
int jour = maintenant.get(Calendar.DAY_OF_MONTH);
// Alignez le calendrier de sortie, ajoutez un espace s'il est inférieur à 10
si (jour < 10) {
// Si c'est la date du jour, ajoute un label
si (jour == aujourd'hui) {
System.out.print(":)" + jour + "(:/t");
} autre {
System.out.print(" " + jour + "/t");
}
} autre {
// Si c'est la date du jour, ajoute un label
si (jour == aujourd'hui) {
System.out.print(":)" + jour + "(:/t");
} autre {
System.out.print("" + jour + "/t");
}
}
// Si c'est samedi, termine la ligne
if (semaine == Calendrier.SATURDAY) {
System.out.println();
}
// Chaque fois que la date est affichée, ajoutez un jour à la date
maintenant.add(Calendar.DAY_OF_MONTH, 1);
// Récupère le jour de la semaine
semaine = maintenant.get(Calendar.DAY_OF_WEEK);
}
}
/**
* Obtenez le jour de la semaine correspondant au 1er janvier de cette année
*
* @param année
* année
* @retour
* @throwsException
*/
public int getJanuaryOne (int année) lève une exception {
int[] weekDays = { 0, 1, 2, 3, 4, 5, 6 };
Calendrier cal = Calendrier.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj");
Date dt = sdf.parse(année + "-01-01");
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
si (w < 0)
w = 0 ;
renvoie les jours de la semaine[w] ;
}
/**
* Imprimez tous les mois de l'année
*/
public void printCalendar() {
pour (int je = 1; je <= 12; i++) {
Chaîne mois = getMonth(i);
printTitle (mois);
//Imprimer les mois avec 31 jours
si (je == 1 || je == 3 || je == 5 || je == 7 || je == 8 || je == 10 || je == 12) {
print31();
}
//Imprime le mois avec 30 jours
sinon si (i == 4 || i == 6 || i == 9 || i == 11) {
print30();
}
// imprimer février
sinon si (i == 2) {
printFévrier();
}
System.out.println();
}
}
//Format d'impression
// ============================================ début
/**
* Imprimer février. Février peut être différent chaque année, il doit donc être traité séparément.
*/
protected void printFévrier() {
si (cette année % 4 == 0) {
// année bissextile
printLeapYear();
} autre {
// année normale
printNonleapYear();
}
}
/**
*Format d'impression pour février des années bissextiles
*/
private void printLeapYear() {
pour (int j = 1; j <= 29; j++) {
Chaîne tmp = "" ;
si (j == 1) {
pour (int k = 1; k <= this.whatDayOnJanuaryOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " " ;
si (this.whatDayOnJanuaryOne == 6) {
System.out.println(tmp);
} autre {
System.out.print(tmp);
}
} sinon si (j > 1 && j < 29) {
si ((this.whatDayOnJanuaryOne + j) % 7 == 0) {
System.out.println(" " + j);
} autre {
si (j < 10) {
System.out.print(" " + j + " ");
} autre {
System.out.print(" " + j + " ");
}
}
} sinon si (j == 29) {
System.out.println(" " + j);
this.whatDayOnJanuaryOne = ((this.whatDayOnJanuaryOne + j) % 7);
}
}
}
/**
* Imprimer le format de février dans les années ordinaires
*/
private void printNonleapYear() {
pour (int j = 1; j <= 28; j++) {
Chaîne tmp = "" ;
si (j == 1) {
pour (int k = 1; k <= this.whatDayOnJanuaryOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " " ;
si (this.whatDayOnJanuaryOne == 6) {
System.out.println(tmp);
} autre {
System.out.print(tmp);
}
} sinon si (j > 1 && j < 28) {
si ((this.whatDayOnJanuaryOne + j) % 7 == 0) {
System.out.println(" " + j);
} autre {
si (j < 10) {
System.out.print(" " + j + " ");
} autre {
System.out.print(" " + j + " ");
}
}
} sinon si (j == 28) {
System.out.println(" " + j);
this.whatDayOnJanuaryOne = ((this.whatDayOnJanuaryOne + j) % 7);
}
}
}
/**
* Imprimer les mois avec 30 jours
*/
protégé void print30() {
pour (int j = 1; j <= 30; j++) {
Chaîne tmp = "" ;
si (j == 1) {
pour (int k = 1; k <= this.whatDayOnJanuaryOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " " ;
si (this.whatDayOnJanuaryOne == 6) {
System.out.println(tmp);
} autre {
System.out.print(tmp);
}
} sinon si (j > 1 && j < 30) {
si ((this.whatDayOnJanuaryOne + j) % 7 == 0) {
System.out.println(" " + j);
} autre {
si (j < 10) {
System.out.print(" " + j + " ");
} autre {
System.out.print(" " + j + " ");
}
}
} sinon si (j == 30) {
System.out.println(" " + j);
this.whatDayOnJanuaryOne = ((this.whatDayOnJanuaryOne + j) % 7);
}
}
}
/**
* Imprimer les mois avec 31 jours
*/
protégé void print31() {
pour (int j = 1; j <= 31; j++) {
Chaîne tmp = "" ;
si (j == 1) {
pour (int k = 1; k <= this.whatDayOnJanuaryOne % 7; k++) {
tmp = tmp + " ";
}
tmp = tmp + " " + j + " " ;
si (this.whatDayOnJanuaryOne == 6) {
System.out.println(tmp);
} autre {
System.out.print(tmp);
}
} sinon si (j > 1 && j < 31) {
si ((this.whatDayOnJanuaryOne + j) % 7 == 0) {
System.out.println(" " + j);
} autre {
si (j < 10) {
System.out.print(" " + j + " ");
} autre {
System.out.print(" " + j + " ");
}
}
} sinon si (j == 31) {
System.out.println(" " + j);
this.whatDayOnJanuaryOne = ((this.whatDayOnJanuaryOne + j) % 7);
}
}
}
/**
*Imprimez le titre de chaque mois
*
* @param mois
*/
protected void printTitle (Chaîne mois) {
System.out.println(" " + mois + " " + cette.année + " ");
System.out.println("--------------------------------------------------------- -- --");
System.out.println("Dim Lun Mar Mer Jeu Ven Sam");
}
//Format d'impression
// ============================================== fin
/**
* Obtenez le nom anglais du mois
*
* @paramm
* Représentation numérique du mois
* @retour
*/
chaîne publique getMonth(int m) {
Chaîne mois = "" ;
interrupteur (m) {
cas 1 :
mois = JANVIER ;
casser;
cas 2 :
mois = FÉVRIER ;
casser;
cas 3 :
mois = MARS ;
casser;
cas 4 :
mois = AVRIL ;
casser;
cas 5 :
mois = MAI ;
casser;
cas 6 :
mois = JUIN ;
casser;
cas 7 :
mois = JUILLET ;
casser;
cas 8 :
mois = AOÛT ;
casser;
cas 9 :
mois = SEPTEMBRE ;
casser;
cas 10 :
mois = OCTOBRE ;
casser;
cas 11 :
mois = NOVEMBRE ;
casser;
cas 12 :
mois = DÉCEMBRE ;
casser;
}
mois de retour ;
}
public int getAnnée() {
année de retour ;
}
public void setYear(int année) {
cette.année = année ;
}
public int getWhatDayOnJanuaryOne() {
renvoie whatDayOnJanuaryOne ;
}
public void setWhatDayOnJanuaryOne(int whatDayOnJanuaryOne) {
this.whatDayOnJanuaryOne = whatDayOnJanuaryOne ;
}
}