Date类
构造函数
Date() 创建一个Date对象,表示当前这一刻的时间
Date(long date) 创建一个Date对象,表示:从1970年1月1日0时0分0秒 后 过了date毫秒 后的那一刻
常用方法
long getTime() 获取的是当前Date对象表示的时间与1970年1月1日0时0分0秒之间的毫秒差
void setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
// Date() 创建一个Date对象,表示当前时间
Date d1 = new Date();
System.out.println(d1);
// Date(long date) 创建一个Date对象,表示:从1970年1月1日0时0分0秒 后 过了date毫秒 后的那一刻。
Date d2 = new Date(0);
System.out.println(d2);
// 表示1个小时后
Date d3 = new Date(1000 * 60 * 60);
System.out.println(d3);
// 表示1天后
Date d4 = new Date(1000 * 60 * 60 * 24);
System.out.println(d4);
// 表示1个月后
Date d5 = new Date(1000 * 60 * 60 * 24 * 31L);
System.out.println(d5);
// long getTime() 获取的是当前Date对象表示的时间与1970年1月1日0时0分0秒之间的毫秒差
Date d6 = new Date();
System.out.println(d6.getTime());
System.out.println(System.currentTimeMillis());
// void setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
// 表示1970的2小时后
// 方式1:构造函数
Date d7 = new Date(1000 * 60 * 60 * 2);
System.out.println(d7);// Thu Jan 01 10:00:00 CST 1970
// 方式2:setTime()
Date d8 = new Date();
d8.setTime(1000 * 60 * 60 * 2);
System.out.println(d8);// Thu Jan 01 10:00:00 CST 1970
}
}
运行结果:
Tue Feb 19 20:35:00 CST 2019
Thu Jan 01 08:00:00 CST 1970
Thu Jan 01 09:00:00 CST 1970
Fri Jan 02 08:00:00 CST 1970
Sun Feb 01 08:00:00 CST 1970
1550579700808
1550579700808
Thu Jan 01 10:00:00 CST 1970
Thu Jan 01 10:00:00 CST 1970
Dateformat
格式化(Date -> String)
String format(Date date) 将一个 Date 格式化为日期/时间字符串
解析(String -> Date)
Date parse(String source)从给定字符串的开始解析文本,以生成一个日期Date
构造方法
SimpleDateFormat()用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateFormatDemo {
public static void main(String[] args) throws ParseException {
method_01();
method_02();
method_03();
}
//日期的解析
public static void method_03() throws ParseException {
// 键盘录入用户的生日
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的生日,格式为:1900-01-01");
String line = sc.nextLine();
// 创建日期格式化器
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 解析
Date birthday = sdf.parse(line);
System.out.println(birthday);// Tue Sep 17 00:00:00 CST 1996
}
// 自定义模式格式化
public static void method_02() {
// SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
// 创建日期格式化器
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日,E HH:mm:ss");
// 创建日期对象
Date date = new Date();
// 格式化
String str = sdf.format(date);
System.out.println(str);// 2016年12月04日,星期日 10:38:40
}
//默认模式格式化
public static void method_01() {
// SimpleDateFormat()用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
// 创建日期格式化器
SimpleDateFormat sdf = new SimpleDateFormat();
// 创建日期
Date date = new Date();
// 格式化
String str = sdf.format(date);
System.out.println(str);// 16-12-4 上午10:29
}
}
运行结果:
19-2-19 下午8:47
2019年02月19日,星期二 20:47:54
请输入您的生日,格式为:1900-01-01
1996-03-13
Wed Mar 13 00:00:00 CST 1996
Calendar(日历)
获取Calendar对象:
Calendar.getInstance()
获取日历的字段
int get(int field)
修改字段
set(int field , int value)
set(int year, int month, int day)
add(int field, int amount)
注意事项:
Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。
而 Calendar.DAY_OF_WEEK 定义和值如下:
Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7
import java.util.Calendar;
public class CalendarDemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
// 获取年
int year = c.get(Calendar.YEAR);
// 获取月
int month = c.get(Calendar.MONTH)+1;
// 获取日
int date = c.get(Calendar.DAY_OF_MONTH);
// 获取小时
int hour = c.get(Calendar.HOUR_OF_DAY);
// 获取分
int minute = c.get(Calendar.MINUTE);
// 获取秒
int second = c.get(Calendar.SECOND);
System.out.println("现在是"+year+"年"+month+"月"+date+"日"+hour+"时"+minute+"分"+second+"秒");
}
}
运行结果:
现在是2019年2月19日20时59分43秒
应用实例
import java.util.Calendar;
import java.util.Scanner;
/*
* 计算任意一个年的2月份有几天
* 需求:用户任意输入一年,我们判断2月有几天
* 方式1:判断是否是闰年,如果是,那就29天。否则28天
* 方式2:我们把日历调整到用户指定年的3月1日,然后把天字段-1.获取此时的天字段
* 思路:
* A:创建键盘录入对象
* B:录入用户输入的年
* C:创建日历字段
* D:把日历设置到指定年的3月1日
* E:把日历的天字段-1
* F:获取天字段的值,一定是2月的最后一天
*/
public class CalendarDemo03 {
public static void main(String[] args) {
// A:创建键盘录入对象
Scanner sc = new Scanner(System.in);
// B:录入用户输入的年
System.out.println("请输入任意的年:比如1990");
String line = sc.nextLine();
int year = Integer.parseInt(line);
// C:创建日历字段
Calendar c = Calendar.getInstance();
// D:把日历设置到指定年的3月1日
c.set(year, 2, 1);
// E:把日历的天字段-1
c.add(Calendar.DAY_OF_MONTH, -1);
// F:获取天字段的值,一定是2月的最后一天
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年的2月分共有" + day + "天");
sc.close();
}
}