【Date类】
import java.util.Date;
/*
* Java 时间和日期类
* java.util.Date
*
* 毫秒概念:1000毫秒 = 1秒
* 毫秒的0点:
* System.currentTimeMills() 返回long型参数
* 获取当前日期的毫秒值
* 时间原点:公元1970年1月1日 午夜0:00:00
* 时间和日期的计算,必须依赖毫秒值
*/
public class Test1 {
public static void main(String[] args) {
//1.
long time = System.currentTimeMillis();
System.out.println(time); // 1541145872206
// Date构造方法
//1.Date空参数构造方法 获取的是,当前操作系统中的时间和日期
Date date = new Date();
System.out.println(date); // Fri Nov 02 19:20:42 CST 2018
//2.Date有参数的构造方法
Date date1 = new Date(0); // 传递毫秒值,并转换为对应的日期对象
System.out.println(date1); // Thu Jan 01 08:00:00 CST 1970
// Date类方法
//1.getTime() 返回值long 将Date表示的日期转换为毫秒级
long time1 = date.getTime();
System.out.println(time1); // 1541158485334
//2.setTime(long 毫秒值) 将毫秒值转换成日期对象
Date date2 = new Date();
date2.setTime(0);
System.out.println(date2); // Thu Jan 01 08:00:00 CST 1970
}
}
【对日期进行格式化】
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* 对日期进行格式化
* 步骤:
* 1.创建SimpleDateFormat对象 在构造方法中,写入字符串的日期格式(按规则自己定义)
* 2.SimpleDateFormat 调用方法format对日期进行格式化 String format(Date date),传递日期对象,返回字符串
* 3.日期模式:
* yyyy 年份
* MM 月份
* dd 月中的天数
* HH 0-23小时
* mm 小时中的分钟
* ss 秒
*
*/
public class Test2 {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd天--HH小时mm分钟ss秒");
String date = sdf.format(new Date());
System.out.println(date); // 2018年11月02天--20小时30分钟35秒
}
}
【将日期字符串转为Date对象】
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* 将字符串日期转为Date对象
* 步骤:
* 1.创建SimpleDateFormat的对象 构造方法中指定日期的模式
* 2.子类对象调用DateFormat方法parse, 传递String,返回Date
*/
public class Test3 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse("1999-12-23");
System.out.println(date); // Thu Dec 23 00:00:00 CST 1999
}
}
【Calendar类】
import java.util.Calendar;
/*
* 日历类 java.util.Calendar 抽象类,使用它的子类
* calendar的静态方法,getInstance() 直接返回了子类的对象 通过静态方法直接获取
*
* 1.Calendar的方法get()
* 获取日历字段的值
* int get(int)
* 参数int, 获取哪个日历的字段
* 返回值,表示日历段的具体数值
*
* 2.Calendar的方法set()
* 设置日历
* set(int field, int value) field设置的是哪个日历字段 value设置后的具体数值
* set(int year, int month, int day) 传递三个整数的年 月 日
*
* 3.Calendar的方法add()
* 日历偏移 指定一个日历中的字段,进行整数偏移
* add(int field, int value)
*/
public class Test4 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
//System.out.println(c);
//1.Calendar的方法get()
// 获取年份
int year = c.get(Calendar.YEAR);
// 获取月份
int month = c.get(Calendar.MONTH);
// 获取天数
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"-"+month+"-"+day); // 2018-10-3
//2.Calendar的方法set()
c.set(Calendar.YEAR,2090);
System.out.println(c.get(Calendar.YEAR)); // 2090
c.set(2080,3,16);
System.out.println(c.get(Calendar.YEAR)+"-"+c.get(Calendar.MONTH)+"-"+c.get(Calendar.DAY_OF_MONTH)); // 2080-3-16
//3.Calendar的方法add()
c.add(Calendar.MONTH, 2);
System.out.println(c.get(Calendar.MONTH)); // 5
}
}
【日期练习:活了多少天】
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) throws ParseException {
function();
}
/*计算活了多少天
* 手动输入 生日(字符串型)
* 当前日期
* 两个日期变成毫秒值 相减
*/
public static void function() throws ParseException{
System.out.println("请输入你的生日:yyyy-MM-dd");
// 键盘输入,获取生日日期
String birthday = new Scanner(System.in).next();
// 将字符串日期转成 Date对象
// 创建SimpleDateFormat对象,写日期模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 调用方法parse,字符串转成日期对象
Date birth = sdf.parse(birthday);
// 获取当前日期对象
Date today = new Date();
// Date类的getTime(),将两个日期转成毫秒值
long todaySecond = today.getTime();
long birthSecond = birth.getTime();
long second = todaySecond -birthSecond;
if(second < 0){
System.out.println("还没有出生");
}else{
System.out.println(second/1000/60/60/24);
}
}
}
【闰年判断】
import java.util.Calendar;
public class Test6 {
public static void main(String[] args) {
function();
}
/*计算闰年
* 高级算法,将日历设置到当年月份的3月1日,利用add向前偏移一天,
* 获取天数,若为29天为闰年,为28天为平年
*/
public static void function(){
Calendar c = Calendar.getInstance();
// 将日历设置到指定年的3月1日
c.set(2000,2,1);
// 日历add方法,向前偏移一天
c.add(Calendar.DAY_OF_MONTH, -1);
// get方法获取天数
int day = c.get(Calendar.DAY_OF_MONTH);
//进行闰年判断
if(day == 29){
System.out.println("闰年");
}else{
System.out.println("平年");
}
}
}