这是我第一次写播客,用来记录自己学习Java的方向和进程,探索Java语言世界的奇妙之旅。
如果文中有错误的地方,希望前辈们可以指点一二。
常用API——Date类
1、Date类的概述
类Date用来表示特定的瞬间,可以精确到毫秒
实际应用可以用来获取当前系统的时间信息,精确到毫秒值
2、Date类常用的构造方法
Date() 获取当前系统时间
Date(long time) 根据指定的毫秒值创建日期对象
3、Date类常用方法
long getTime()
获取当前时间的毫秒值
4、时间的转换
1秒=1000毫秒
时间零点:1970-1-1 00:00:00
5、相关应用
import java.util.Date;
public class Demo01 {
public static void main(String[] args){
// 创建日期对象:当前系统时间
Date date = new Date();
//获取当前系统时间信息
System.out.println(date);
// 获得当前时间的毫秒值
System.out.println(date.getTime());
//将毫秒值转为时间
//毫秒值是唯一的,是单向性的
Date date2 = new Date(1555293724756L);
System.out.println(date2);
}
}
常用API——DateFormat类
1、DateFormat类的作用
1.将日期对象转换为字符串 Date==>String
2.将日期字符串转换为日期对象:String==>Date
2、如何创建一个DateFormat对象
DateFormat是一个抽象类,不能直接创建该类对象,只能创建子类对象
已知直接子类有:SimpleDateFormat
直接创建SimpleDateFormat对象,调用方法进行格式化操作即可。
3、SimpleDateFormat类常用的构造方法
SimpleDateFormat(String pattern)
根据日期模式创建日期格式化对象
日期模式
yyyy 年 2019
MM 月 04
dd 日 15
HH 时 23
mm 分 40
ss 秒 50
4、例子:将Date转成“xxxx年xx月xx日 xx时xx分xx秒”的格式
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo02{
public static void main(String[] args){
// 需求:将 Date 转成 "2019年09月15日 19时18分19秒"
// 获得日期对象
Date date = new Date();
// 创建日期格式化对象并指定日期模式
// DateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 将日期对象转换为字符串
String dateStr = sdf.format(date);
//输出
System.out.println(dateStr);
}}
6、使用DateFormat类的方法将日期字符串转换为日期对象
1.创建日期格式化对象并指定日期模式:SimpleDateFormat
2.调用日期格式化对象的方法将日期字符串转换为日期对象:Date parse(String dateStr)
注意事项:指定的日期模式和字符串日期模式要一致。
7、DateFormat类常用方法有两个
String format(Date date) 日期转字符串
Date parse(String str) 字符串转日期
例子:
public class Demo03 {
public static void main(String[] args) throws ParseException {
// 1. 日期字符串:String
String dateStr = "2007/12/26";
// 2. 创建日期格式化对象并指定日期模式:SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
// 3. 调用日期格式化对象的方法将日期字符串转换为日期对象:Date parse(String dateStr)
Date date = sdf.parse(dateStr);
System.out.println(date);
}}
常用API——Calender类
1、Calender的作用
非常方便的可以获取到年月日时分秒,昨天,前天,明天,上个星期,上个月,前几年…
可以方便的调整时间
2、创建Calender
Calender是一个抽象的类,不能直接创建对象,只能创建子类对象
通过Calendar类静态方法创建日历类对象,该方法如下:
static Calendar getInstance() 获得日历对象
3、Calender类的常用方法
int get(int field)
根据日历字段获得值
常用的日历字段:
年 Calendar.YEAR
月 Calendar.MONTH
日 Calendar.DAY_OF_MONTH
时 Calendar.HOUR
分 Calendar.MINUTE
秒 Calendar.SECOND
void set(int field, int value)
* 修改指定日历字段的值为指定值value
void add(int field, int amount)
* 将指定日历字段的值在当前值的基础上偏移一个值:amount
* 正数:向前偏移 +
* 负数:向后偏移 -
5、Calender注意事项
MONTH: 取值范围0到11 需要加1才是我们正确的月份
DAY_OF_WEEK: 1代表星期天
例子:
import java.util.Calendar;
public class Demo08 {
public static void main(String[] args){
// 获得日历对象
Calendar c = Calendar.getInstance(); // new GregorianCalendar();
System.out.println(c.get(Calendar.DAY_OF_WEEK));
// 获得年
int year = c.get(Calendar.YEAR);
// 获得月
int month = c.get(Calendar.MONTH) + 1;
// 获得日
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"-"+month+"-"+day);
System.out.println("----------------------");
// 将年份修改为2020年
c.set(Calendar.YEAR, 2020);
c.set(Calendar.MONTH, 4);
// 获得年
year = c.get(Calendar.YEAR);
// 获得月
month = c.get(Calendar.MONTH) + 1;
System.out.println(year+"-"+month+"-"+day);
System.out.println("----------------------");
// 将年份向后偏移1年
c.add(Calendar.YEAR, 2);
c.add(Calendar.MONTH, 12); // 0 到 11
// 获得年
year = c.get(Calendar.YEAR);
System.out.println(year+"-"+month+"-"+day);
}}
分享两个实际应用
1、计算一个人从出生到现在活了多少时间
分析:
1. 生日日期字符串:"1999-02-10"
2. 将生日字符串转换为日期对象:String --> Date
3. 获得出生时的毫秒值:long
4. 获得当前时间的毫秒值:long
5. 两个毫秒值相减:long
6. 计算天数
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo09 {
public static void main(String[] args)throws ParseException{
// 1. 生日日期字符串:"1999-02-10"
String birthdayStr = "1999-02-10";
// 2. 将生日字符串转换为日期对象:String --> Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthdayDate = sdf.parse(birthdayStr);
// 3. 获得出生时的毫秒值:long
long birthdayDateTime = birthdayDate.getTime();
// 4. 获得当前时间的毫秒值:long
Date currentDate = new Date();
long currentDateTime = currentDate.getTime();
// 5. 两个毫秒值相减:long
long distance = currentDateTime - birthdayDateTime;
// 6. 计算天数
System.out.println("活了"+(distance/1000/3600/24)+"天");
}}
2、计算指定年份的2月份的天数
分析:
1. 创建日历对象
2. 设置日历时间为指定年份的3月1号
3. 将日向后偏移1天:减一天(2月最后一天)
4. 获得当前月份的天数
import java.util.Calendar;
public class Demo10 {
public static void main(String[] args){
// 1. 创建日历对象
Calendar c = Calendar.getInstance();
// 2. 设置日历时间为指定年份的3月1号
c.set(2000, 2, 1);
// 3. 将日向后偏移1天:减一天(2月最后一天)
c.add(Calendar.DAY_OF_MONTH, -1);
// 4. 获得当前月份的天数
int day = c.get(Calendar.DAY_OF_MONTH);
if (day == 28){
System.out.println("平年");
} else {
System.out.println("闰年");
}
System.out.println(day);
}
}
3、计算500天之后的日期
public class Test03 {
public static void main(String[] args) {
//获取当前日历对象
Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.DAY_OF_WEEK));
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+"日");
//获取500天后的日期
c.add(Calendar.DAY_OF_YEAR,500);
year = c.get(Calendar.YEAR);
month =c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+month+"月"+day+"日");
}}