Calendar类:日历类
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,
并为操作日历字段(例如获得下星期的日期)提供了一些方法
是一个抽象类,如何实例化?
public static Calendar getInstance() :通过一个静态功能来创建日历了对象
public class CalendarDemo {
public static void main(String[] args) {
//Calendar不能被实例化,通过静态方法
Calendar c =Calendar.getInstance();
//通过get方法显示当前年份,月份等
int year =c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
System.out.println(year+"年"+(month+1)+"月"+date+"日");
}
}
Calendar中的两个常用方法:
public abstract void add(int field,int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量(这个方法常用)
public final void set(int year, int month,int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
public class CalendarDemo2 {
public static void main(String[] args) {
Calendar c =Calendar.getInstance();//创建日历类对象
int year = c.get(Calendar.YEAR);
System.out.println(year+"年");
c.add(Calendar.YEAR, +5);//使用add方法,无返回值
int year1 = c.get(Calendar.YEAR); //获取当前年份
System.out.println(year1+"年");
}
}
下面是一个Colender类的练习
import java.util.Calendar;
import java.util.Scanner;
/**
* 需求:获取任意一年的二月有多少天 (改进:键盘录入一个年份)
*
*分析:
* 1)键盘录入任意一个年份
* 2)创建日历类对象
* 3)设置年月日
* set(录入year,2,1) ; //实际是3月1日
* 4)再利用add(int field,int amount) : 在这里只需要将日期往前退一天即可
*/
public class CalendarTest {
public static void main(String[] args) {
//创建键盘录入年份
Scanner sc = new Scanner(System.in);
//提示用户输入一个年份
System.out.println("请输入一个年份:");
int year = sc.nextInt();
//创建日历对象
Calendar c = Calendar.getInstance();
//设置年份和月份,最后输出
c.set(year, 2,1);
c.add(Calendar.DATE, -1);
int date= c.get(Calendar.DATE);
System.out.println("该年的二月份有"+date+"天");
}
}
Date日期类
java.util.Date:类 Date 表示特定的瞬间,精确到毫秒
构造方法:
public Date()表示分配它的时间(精确到毫秒)。
public Date(long date):创建一个日期对象,指定毫秒值 (需要将long 时间毫秒值转换成Date对象)
public void setTime(long time):设置毫秒值
public class DateDemo {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
Date dd=new Date(1000);
System.out.println(dd);
}
}
public long getTime()
将Date--->long的毫秒值public class DateDemo2 {
public static void main(String[] args) {
Date d = new Date ();
long l =d.getTime();
System.out.println(l);
}
}
重点:Date的日期格式和日期的文本格式:String类型 之间进行转换
Date---->String(格式化)
String-->Date(解析)
中间的转换:使用中一个中间类:DateFormat,并且DateFormat是一个抽象类,抽象意味着不能实例化,所以应该考虑用它的子类:
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpelDateFormat的构造方法:
public SimpleDateFormat(String pattern) :构造一个SimpleDateFormat对象,根据pattern(模式:规则)
SimpleDateFormat sdf = new SimpleDateFormat("xxx年xx月xx日") ;
日期和时间模式
年: yyyy
月: MM
日: dd
时: hh
分: mm
秒: ss
实际开发中:牵扯时间的东西,经常Date--String String--Date
public class DateDemo3 {
public static void main(String[] args) throws ParseException {
//创建日期类对象
//格式化3步走
//1.获取当前的日期类对象
//2.创建SimpleDateFormat类的对象
//3.simpelDateFormat类调用format()方法进行格式化,返回一个String 类型的值
Date d = new Date ();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
String Str = sdf.format(d);
System.out.println("当前时间是:"+Str);
System.out.println("-----------------------------------------");
//解析日期3步走
//1.创建字符串类型的日期
//2.创建中间类SimpleDateFormat的对象,!!!注意:构造方法中的格式必须和String类型一致
//3.simpelDateFormat类调用parse()方法,返回值是Date类型的
String Str1 = "1995-09-10";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date dd =sdf1.parse(Str1);
System.out.println(dd);
}
}