Java日历--日历填坑
一月到十二月的英语:
一月January,二月February,三月March,四月April,五月May,六月June,七月July,八月August,九月September,十月October,十一月November,十二月December
星期一到星期五的英语:
Monday 星期一
Tuesday 星期二
Wednesday 星期三
Thursday 星期四
Friday 星期五
Saturday 星期六
Sunday 星期天
注意:Calendar类中的月份表示是0-11,挺反人类的,其他的都正常,比如2021表示2021年。由于外国人的习惯,把周天放在了第一位,所以星期是从周天开始的,1表示周天,2表示周一,以此类推。在代码中,我使用蓝色表明Calendar对象所代表的当前日期。使用System.out.format()语句来实现。
下面上代码:
点击查看代码
import java.util.Calendar;
public class Test {
public static void main(String args[]){
//获取日期
// System.out.println(calendar.get(Calendar.DATE));
//获取周几
// System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
//获取月份
// int month = calendar.get(Calendar.MONTH);
//获取一个月的天数
// System.out.println(calendar.getMaximum(Calendar.DATE));
//获得Calendar对象
Calendar calendar = Calendar.getInstance();
//设置起始日期为2021年12月1日
calendar.set(2022,0,1);
//打印calendar表示的时间
System.out.println(calendar.getTime());
//打印上层星期u
String[] weeks = new String[]{"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
for (String e : weeks){
System.out.print(" "+e);
}
System.out.println();
//首先获得当前时间的星期,新建一个int数组,大小是calendar表示月的天数加上之前天,也就是日历中开始为空的部分。
int week = calendar.get(calendar.DAY_OF_WEEK)-1;
int n = week + calendar.getMaximum((calendar.DATE));
int[] days = new int[n];
days[week] = 1;
int z = 2;
//给数组赋值,模拟1号到月底
for(int j = week+1; j < n; j++){
days[j] = z++;
}
//将数组按7个为一排打印出来,和上层星期排好
int i = 0;
for(int a : days){
if(i != 0 && i % 7 ==0){
System.out.println();
}
if(days[i] >= 10){
if(calendar.get(Calendar.DATE) == days[i]){
System.out.format(" \033[34m%d",days[i++]);
}else {
System.out.format(" \033[0m%d",days[i++]);
}
}else {
if(days[i] == 0){
System.out.print(" ");
i++;
}else{
if(calendar.get(Calendar.DATE) == days[i]){
System.out.format(" \033[34m%d",days[i++]);
}else {
System.out.format(" \033[0m%d",days[i++]);
}
}
}
}
}
}
直接上bug吧,calendar的日期输入不一样时,日历会发生改变。
最后代码修改的样子:
点击查看代码
import java.util.Calendar;
public class Test {
public static void main(String args[]){
//获取日期
// System.out.println(calendar.get(Calendar.DATE));
//获取周几
// System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
//获取月份
// int month = calendar.get(Calendar.MONTH);
//获取一个月的天数
// System.out.println(calendar.getMaximum(Calendar.DATE));
//获得Calendar对象
Calendar calendar = Calendar.getInstance();
//设置查询的日期并使用get方法获得日期中的年、月、日
calendar.set(2000,1,24);
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
int month = calendar.get(Calendar.MONTH);
System.out.println(month);
int day = calendar.get(Calendar.DATE);
System.out.println(day);
//打印calendar表示的时间
System.out.println(calendar.getTime());
//打印上层星期u
String[] weeks = new String[]{"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
for (String e : weeks){
System.out.print(" "+e);
}
System.out.println();
//首先获得当前时间所在月1号的星期,新建一个int数组,大小是calendar表示月的天数加上之前天,也就是日历中开始为空的部分。
calendar.set(year,month,1);
int week = calendar.get(calendar.DAY_OF_WEEK)-1;
int n = week + calendar.getMaximum((calendar.DATE));
int[] days = new int[n];
days[week] = 1;
int z = 2;
//给数组赋值,模拟1号到月底
for(int j = week+1; j < n; j++){
days[j] = z++;
}
//将数组按7个为一排打印出来,和上层星期排好
int i = 0;
for(int a : days){
if(i != 0 && i % 7 ==0){
System.out.println();
}
if(days[i] >= 10){
if(day == days[i]){
System.out.format(" \033[34m%d",days[i++]); //eclipse不支持这样的颜色显示
}else {
System.out.format(" \033[0m%d",days[i++]);
}
}else {
if(days[i] == 0){
System.out.print(" ");
i++;
}else{
if(day == days[i]){
System.out.format(" \033[34m%d",days[i++]);
}else {
System.out.format(" \033[0m%d",days[i++]);
}
}
}
}
}
}
点击查看代码
import java.util.Calendar;
public class Test {
public static void main(String args[]){
//获取日期
// System.out.println(calendar.get(Calendar.DATE));
//获取周几
// System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
//获取月份
// int month = calendar.get(Calendar.MONTH);
//获取一个月的天数
// System.out.println(calendar.getMaximum(Calendar.DATE));
//获得Calendar对象
Calendar calendar = Calendar.getInstance();
//设置查询的日期并使用get方法获得日期中的年、月、日
// calendar.set(2000,1,24);
// calendar.setTimeInMillis(System.currentTimeMillis());
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
int month = calendar.get(Calendar.MONTH);
System.out.println(month);
int day = calendar.get(Calendar.DATE);
System.out.println(day);
//打印calendar表示的时间
String now = String.format("%tF",calendar);
System.out.println("你好,今天的日期是:\n"+now);
//打印上层星期u
String[] weeks = new String[]{"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
for (String e : weeks){
System.out.print(" "+e);
}
System.out.println();
//首先获得当前时间所在月1号的星期,新建一个int数组,大小是calendar表示月的天数加上之前天,也就是日历中开始为空的部分。
calendar.set(year,month,1);
int week = calendar.get(calendar.DAY_OF_WEEK)-1;
int n = week + calendar.getMaximum((calendar.DATE));
int[] days = new int[n];
days[week] = 1;
int z = 2;
//给数组赋值,模拟1号到月底
for(int j = week+1; j < n; j++){
days[j] = z++;
}
//将数组按7个为一排打印出来,和上层星期排好
int i = 0;
for(int a : days){
if(i != 0 && i % 7 ==0){
System.out.println();
}
if(days[i] >= 10){
System.out.print(" "+days[i++]);
}else {
if(days[i] == 0){
System.out.print(" ");
i++;
}else{
System.out.print(" "+days[i++]);
}
}
}
}
}