关键字:普通日期date + 格式化SimpleDateFormat +日历Calendar
Date
构造方法:
注意中国标准时间是东八区
public static void main(String[] args) {
//public Date():分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
Date d1 = new Date();
System.out.println(d1);
//public Date(long date):分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
long date = 1000*60*60;
Date d2 = new Date(date);
System.out.println(d2);
}
方法
格式化 SimpleDateFormat
public static void main(String[] args) throws ParseException {
//格式化:从 Date 到 String
Date d = new Date();
// SimpleDateFormat sdf = new SimpleDateFormat();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);
System.out.println(s);
System.out.println("--------");
//从 String 到 Date
String ss = "2048-08-09 11:11:11";
//ParseException
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(ss);
System.out.println(dd);
String sd = sdf.format(dd);
System.out.println(sd);
}
重要方法
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);
Date dd = sdf2.parse(ss);
Calendar
public static void main(String[] args) {
//日历字段已使用当前日期和时间初始化
Calendar c = Calendar.getInstance();//对象的创建
//输出很多有用信息
// java.util.GregorianCalendar
// [time=1594086836773,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=6,WEEK_OF_YEAR=28,WEEK_OF_MONTH=2,DAY_OF_MONTH=7,DAY_OF_YEAR=189,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=53,SECOND=56,MILLISECOND=773,ZONE_OFFSET=28800000,DST_OFFSET=0]
System.out.println(c);
//public int get(int field)
int year = c.get(c.YEAR);
int month = c.get(Calendar.MONTH );//月份从0开始计算
int date = c.get(Calendar.DATE);
//System.out.println(Calendar.MONTH+1);不可以直接在此+1,
System.out.println(year + "年" + (month + 1) + "月" + date + "日");//2020年7月7日
}
常用方法:get+add+set
public static void main(String[] args) {
//获取日历类对象
Calendar c = Calendar.getInstance();
//public int get(int field):返回给定日历字段的值
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
//public abstract void add(int field, int amount):根据日历的规则,将指定的时间量添加或减去给定的日历字段
//需求1:3年前的今天
// c.add(Calendar.YEAR,-3);
// year = c.get(Calendar.YEAR);
// month = c.get(Calendar.MONTH) + 1;
// date = c.get(Calendar.DATE);
// System.out.println(year + "年" + month + "月" + date + "日");
//需求2:10年后的10天前
// c.add(Calendar.YEAR,10);
// c.add(Calendar.DATE,-10);
// year = c.get(Calendar.YEAR);
// month = c.get(Calendar.MONTH) + 1;
// date = c.get(Calendar.DATE);
// System.out.println(year + "年" + month + "月" + date + "日");
//public final void set(int year,int month,int date):设置当前日历的年月日
c.set(2050,10,10);
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH) + 1;
date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
}
案例:获取任意一年2月份的天数
public static void main(String[] args) {
//获取任意一年的二月有多少天
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
String line = sc.nextLine();
int year = Integer.parseInt(line);
//也可以直接接受int类型的输入
//int year =sc.nextInt();
Calendar c = Calendar.getInstance();
//设置日历对象的年月日
c.set(year,2,1);
//3月1日网签推一天,就是2月的最后一天
c.add(Calendar.DATE,-1);
//获取这月的天数即可
int ds = c.get(Calendar.DATE);
System.out.println(ds);
}