日期时间
生活中相关的时间
世界标准时间:格林尼治、格林威治(Greenwich Mean Time)简称GMT。
中国的标准时间:世界标准时间+8小时(北京时间,中国位于东八区)
时间单位换算公式:
1秒=1000毫秒
1毫秒=1000微秒
1微秒=1000纳秒
计算机中的时间原点
计算机中的起始时间:1970年1月1日 00:00:00(C语言的诞生时间,Java沿用)
Date日期类
Date代表了一个特定的时间,精确到毫秒
构造方法
Date类的两个构造方法
| 方法名 | 说明 |
|---|---|
| public Date() {} | 表示默认时间 |
| public Date(long date) {} | 指定时间 |
有参构造:把从时间原点开始,过了指定毫秒的时时间,封装成一个Date对象,需要考虑时差的问题。
package com.test3.test30;
import java.util.Date;
public class DateDemo01 {
public static void main(String[] args) {
/**
* 当前时间
*/
Date date1 = new Date();
System.out.println(date1);//Sun Nov 14 16:52:29 CST 2021
/**
* 中国是在东八区,所有要在标准时间的基础上加8小时
* 世界标准时间上过了0毫秒
*/
Date date2 = new Date(0L);
System.out.println(date2);//Thu Jan 01 08:00:00 CST 1970
/**
* 在时间原点的基础上过了指定毫秒的时间节点
*/
Date date3 = new Date(System.currentTimeMillis());
System.out.println(date3);//Sun Nov 14 16:58:05 CST 2021
}
}
成员方法
| 方法名 | 说明 |
|---|---|
| public void setTime(long time) {} | 设置时间,传递毫秒值 |
| public long getTime() {} | 获取时间对象的毫秒值 |
package com.test3.test30;
import java.util.Date;
public class DateDemo02 {
/**
* 设置时间,传递毫秒值
*/
private static void setTime() {
Date date2 = new Date();
date2.setTime(0L);
System.out.println(date2);//Thu Jan 01 08:00:00 CST 1970
}
/**
* 获取时间对象的毫秒值
*/
private static void getTime() {
Date date1 = new Date();
long time1 = date1.getTime();
System.out.println(time1);//1636881019418 当前时间的毫秒值
System.out.println(System.currentTimeMillis());//1636881019418
}
}
SimpleDateFormat类
SimpleDateFormat可以对Date对象进行格式化和解析
格式化:
Date对象-------------------------------> 2021年11月14日 00:00:00
解析:
2021年11月14日 00:00:00---------------->Date对象
| 字母 | 含义 |
|---|---|
| y | 年 |
| M | 月 |
| d | 日 |
| H | 时(0-23) |
| h | 时(1-12) |
| m | 分 |
| s | 秒 |
举例:
2021-11-14 17:23:11 ----------------------> yyyy-MM-dd HH:mm:ss
2021年11月14日 17:23:11 -------------------> yyyy年MM月dd日 HH:mm:ss
构造方法
| 方法名 | 说明 |
|---|---|
| public SimpleDateFormat() {} | 构造一个SimpleDateFormat,使用默认格式 |
| public SimpleDateFormat(String pattern) {} | 构造一个SimpleDateFormat,使用指定格式 |
成员方法
| 方法名 | 说明 | 备注 |
|---|---|---|
| public final String format(Date date) {} | 将日期格式转为日期/时间字符串 | 格式化(从Date到String) |
| public Date parse(String source){} | 从给定字符串的开始解析文本以生成日期 | 解析(从String到Date) |
日期格式化工具类
日期格式与指定格式字符串之间的相互转换
package com.test3.test30;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatUtil {
/**
* 将日期类从Sun Nov 14 17:45:24 CST 2021
* 格式化为2021-11-14 17:40:52
*
* @param date
* @return
*/
private static String format1(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String result = sdf.format(date);//2021-11-14 17:40:52
return result;
}
/**
* 将日期类从Sun Nov 14 17:45:24 CST 2021
* 格式化为2021年11月14日 17:42:29
* 24小时制
*
* @param date
* @return
*/
private static String format2(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String result = sdf.format(date);//2021年11月14日 17:42:29
return result;
}
/**
* 将日期类从Sun Nov 14 17:45:24 CST 2021
* 格式化为2021年11月14日 17:42:29
* 12小时制
*
* @param date
* @return
*/
private static String format3(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String result = sdf.format(date);//2021-11-14 05:43:25
return result;
}
}
解析工具类
pattern中的格式必须与要解析的字符串日期格式完全保持一致!!!
否则会报错:
Exception in thread "main" java.text.ParseException: Unparseable date: "2021-11-14"
package com.test3.test30;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class PareseUtil{
/**
* 将字符串格式的时间解析为日期对象
*
* @param dateStr 要解析的日期字符串
* @return
* @throws ParseException
*/
private static Date parseStrToDate(String dateStr) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(dateStr);
}
}
这篇博客介绍了Java中处理日期和时间的基本概念,包括世界标准时间GMT、中国的北京时间以及时间单位的换算。详细讲解了Date类的构造方法和成员方法,如设置和获取时间的毫秒值。此外,还探讨了SimpleDateFormat类在日期格式化和解析中的应用,展示了如何将日期对象转换为不同格式的字符串,并强调了解析时格式必须与输入字符串一致的重要性。
716

被折叠的 条评论
为什么被折叠?



