4.30Calendar类和Date类

Calendar类

/**
 * Calendar类:日历类
 * Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,
 * 并为操作日历字段(例如获得下星期的日期)提供了一些方法.
 * 该抽象类通过静态方法public static Calendar getInstance()来创建对象
 * 常用方法:
 * public abstract void add(int field,int amount)			给指定的字段增加偏移量.
 * public final void set(int year, int month,int date)		对日期字段设置值
 * */
public class Text1 {
	public static void main(String[] args) {
		Calendar now = Calendar.getInstance();//获取当前系统时间
		System.out.println(now);
		System.out.println(now.getTimeInMillis());//输出1525246948740,这是当前系统时间距离1970 年 1 月 1 日的毫秒值
		//获取年
		int year = now.get(Calendar.YEAR);//Calendar.YEAR是字段,即对象的成员变量
		//获取月
		int month = now.get(Calendar.MONTH);//这里输出的月份会比当前系统时间小1,他是从0开始的
		//获取日
		int day =  now.get(Calendar.DATE);
		//输出
		System.out.println(year+"年"+(month+1)+"月"+day+"日");//2018年5月2日
		now.add(Calendar.MONTH, 1);
		int month2 = now.get(Calendar.MONTH);
		System.out.println(month2);//输出5,给4进行了加1
		now.set(1995, 10, 16);//重新设置时间,所以year,month,day就需要重新get新的值,注意month的值需要比你想要设置的值小1
		year = now.get(Calendar.YEAR);
		month = now.get(Calendar.MONTH);
		day = now.get(Calendar.DATE);
		System.out.println(year+"年"+(month+1)+"月"+day+"日");
	}
}
import java.util.Calendar;
import java.util.Scanner;

//获取任意年份的二月有多少天
public class Text2 {
	public static void main(String[] args) {
		Calendar time = Calendar.getInstance();
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入任意一个年份");
		int year = sc.nextInt();
		time.set(year, 2, 1);//将时间设置为该年份的3月1日
		time.add(Calendar.DATE, -1);//对DATE的偏移量设置为-1,时间就成为了该年的二月最后一天
		int i = time.get(Calendar.DATE);//获取DATE
		System.out.println(year+"年的二月份有"+i+"天");
	}
}

Date类

import java.util.Date;

/**
 * Date类:表示的是特定的瞬间,精确到为毫秒
 * 构造方法:
 * 	public Date()表示分配它的时间(精确到毫秒)。
 * 	public Date(long date):创建一个日期对象,指定毫秒值 		(需要将long 时间毫秒值转换成Date对象)
 *	public void setTime(long time):设置毫秒值
 * 常用方法:
 * 	public long getTime()		返回距1970年0:0:0到Date对象的时间毫秒值
 * 	public int compareTo(Date anotherDate)		比较两个Date对象的时间先后顺序,对象在参数之间返回-1,相等时返回0,对象在参数之后返回1
 * 	public boolean after(Date when)		判断对象是否在参数之后
 * 	public boolean before(Date when)	判断对象是否在参数之前
 * */
public class Text1 {
	public static void main(String[] args) {
		Date d = new Date();
		System.out.println(d);//输出当前系统时间,该类重写了toString方法
		Date dd = new Date(3600000);//按毫秒值设置时间
		System.out.println(dd);
		System.out.println(d.getTime());//对象d的时间毫秒值
		System.out.println(dd.compareTo(d));//dd在d之前返回一个小于0的数-1
		System.out.println(d.after(dd));//d在dd之后输出true
		System.out.println(d.before(dd));//d在dd之后输出flase
	}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Date的日期格式和日期的文本格式之间的转换
 * 即Date与String之间的类型转换,需要借助于抽象类DateFormat的子类SimpleDateFormat
 * Date--->String 称为格式化		利用format方法
 * String--->Date 称为解析		利用parse方法
 * 
 * SimpelDateFormat的构造方法:
 * public SimpleDateFormat(String pattern) :构造一个SimpleDateFormat对象,确定了格式化的格式,如下
 * SimpleDateFormat sdf = new SimpleDateFormat("xxx年xx月xx日") ;
 * 
 * */
public class Text2 {
	public static void main(String[] args) throws ParseException {
		//Date转化为String	格式化
		Date d = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss");
		String str = sdf.format(d);//按sdf的格式输出年月日时分秒等值
		System.out.println(str);//2018-05-02  08:47:13
		
		//String转化为Date 	解析
		String str2 = "1995-11-16  8:0:0";
		Date d2 = new Date();
		d2 = sdf.parse(str2);//理解为按sdf的格式从str2中读取年月日时分秒等值
		//注意 :simpleDateFormat在解析文本格式的时候,里面 模式(规则)一定要和文本格式的模式一直,否则就出现PareseException
		System.out.println(d2);//Thu Nov 16 08:00:00 CST 1995
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
		d2 = sdf2.parse(str2);
		System.out.println(d2);//Thu Nov 16 00:00:00 CST 1995
	}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

//计算这是你出生的第多少天?
public class Text3 {
	public static void main(String[] args) throws ParseException {
		Scanner sc = new Scanner(System.in);
		System.out.println("请按照xxxx-xx-xx格式输入你的生日");
		String birthday = sc.nextLine();//录入生日
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//创建个格式
		Date d = new Date();
		d = sdf.parse(birthday);//解析生日
		long birth = d.getTime();//将生日转化为毫秒值
		Date now = new Date();//创建当前系统的时间对象
		long today = now.getTime();//将当前系统时间对象转化为毫秒值
		long day = (today-birth)/3600000/24;//计算出生天数
		System.out.println("这是你出生的第"+day+"天");
	}
}




猜你喜欢

转载自blog.csdn.net/ws1995_java/article/details/80199198