java中, Calendar的用法多种多样。
!!!创建 Calendar对象,不是用new(),而是,如下代码:
Calendar c=Calendar.getInstance(); //默认为你的计算机的区时的calendar对象,我的电脑是"GMT+08:00"的日历
好吧,它的详细用法,我就用代码来表示,请看:(注意看注释!注释才是精华)
package package1;
import java.text.SimpleDateFormat;
import java.util.*;
public class No2
{
public static void main(String[] args) //Asia/Shanghai
{
Calendar c=Calendar.getInstance();//默认为你的计算机的区时的calendar对象,我的电脑是"GMT+08:00"的日历
//GMT(Greenwich Mean Time)**是格林尼治标准时间,+08:00 指标准时间加8小时,也就是北京时间。**
// Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00")); //如果你出国了,想获取东八区时间
//如果你想获取你电脑的时区等信息,可用代码:
System.out.println("电脑时区信息是:"+c.getTimeZone());
//一般,做日历想得到日期,会先设计日期,如
//c.set(year,i,1); //设置year-month-day,Parameters:year.month.date
//如果仅仅获取当前时间数据,如下:
int year = c.get(Calendar.YEAR); //获取年
int month = c.get(Calendar.MONTH) + 1; //获取月份,0表示1月,11表示12月,+1与日历月相同
int week =c.get(Calendar.DAY_OF_WEEK); //获取星期几,SUNDAY=1, MONDAY=2, SATURDAY=7
int day = c.get(Calendar.DAY_OF_MONTH); //获取当前天数
int first = c.getActualMinimum(c.DAY_OF_MONTH); //获取现在月最小天数
int last = c.getActualMaximum(c.DAY_OF_MONTH); //获取现在月最大天数
int hour = c.get(Calendar.HOUR_OF_DAY); //获取当前小时
int minute = c.get(Calendar.MINUTE); //获取当前分钟
int second = c.get(Calendar.SECOND); //获取当前秒
System.out.println("当前时间:"+year + "-" + month + "-"+ day + " "+hour + ":" + minute +":" + second);
System.out.println("第一天和最后天:" + first +" " + last+" ");
//自己定义日期时间格式
SimpleDateFormat date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//yyyy-年,MM-月,dd-日,HH-时,mm-分,ss-秒
String currentDate = date.format(c.getTime()); //当前日期
System.out.println("当前日期curDate = " +currentDate);
}
}
运行结果:
电脑时区信息是:sun.util.calendar.ZoneInfo[id=“Asia/Shanghai”,offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
当前时间:2020-7-12 17:55:18
第一天和最后天:1 31
当前日期curDate = 2020-07-12 17:55:18
//----------------------------------------------------------
嗯,知道Calendar的用法还是不够的,有时候,我们要随意改变时间的格式,
我们要知道SimpleDateFormatht的用法,好吧,请看代码和图片的格式:
SimpleDateFormat date=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); //yyyy-年,MM-月,dd-日,HH-时,mm-分,ss-秒
ok,现在,根据上面的知识,我想做一个日历,循环输出2020-2022的日期。
看代码:
package package1;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class cc
{
public static void main(String[] args) //循环输出2020到2022年每一天
{
List<String> Yeardates=new ArrayList();
for (int year = 2020; year <= 2022; year++)
Yeardates.addAll(GetDaysOfYear(year));
for (int i = 0; i < Yeardates.size(); i++)
System.out.println(Yeardates.get(i));
}
public static List<String> GetDaysOfYear(int year) //传入年,获取一年时间
{
Calendar c=Calendar.getInstance();
List<String> dates=new ArrayList<String>();
for(int i=0;i<12;i++)//月份
{
c.set(year,i,1); //设置year-month-day,Parameters:year.month.date
int lastDay=c.getActualMaximum(c.DAY_OF_MONTH);
for(int j=1;j<=lastDay;j++) //当月的Day
{
String month;
String day;
if(i<9) month="-0"+(i+1);//月份加一
else month="-"+(i+1);
if(j<10) day="-0"+j;
else day="-"+j;
dates.add(year+month+day);
}
}
return dates;
}
}
运行结果