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+"天");
}
}