Java_常用类13_DateDateFormatSimpleDateFormat类
Posted zhaolanqi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java_常用类13_DateDateFormatSimpleDateFormat类相关的知识,希望对你有一定的参考价值。
Date、DateFormat、SimpleDateFormat类
与日期相关的类
A. java.util.Date类:最常用的功能为获得系统的当前时间。
B. java.util.Calendar类:与日历相关的类。可以获得日期相关的信息,还可以进行日期的计算。
C. java.text.DateFormat及其子类:可以对String与Date进行相互的转换。
/*******************************************************************************************/
Date date = new Date();
System.out.println(date);// Sat Apr 01 11:32:05 CST 2017
//将Date转换为String(格式化)
DateFormat df = DateFormat.getDateInstance();
String s = df.format(date);
System.out.println(s);// 2017-4-1
//将String转换为Date(解析)
s = "2008-8-8";
try {
date = df.parse(s);
System.out.println(date);// Fri Aug 08 00:00:00 CST 2008
} catch (ParseException e) {
System.out.println("日期不合法!!!");
}
/*******************************************************************************************/
Date date = new Date();
System.out.println(date);// Sat Apr 01 11:38:09 CST 2017
//将Date转换为String(格式化)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(date);
System.out.println(s);// 2017-04-01 11:38:09
//将String转换为Date(解析)
s = "2008-8-8 8:8:8";
try {
date = sdf.parse(s);
System.out.println(date);// Fri Aug 08 08:08:08 CST 2008
} catch (ParseException e) {
System.out.println("日期不合法!!!");
}
/*******************************************************************************************/
1. 类 Date 表示特定的瞬间,精确到毫秒。
A:构造方法
public Date():创建自 1970 年 1 月 1 日 00:00:00 GMT 到当前的默认毫秒值的日期对象
public Date(long time):创建自 1970 年 1 月 1 日 00:00:00 GMT 到给定的毫秒值的日期对象
public class DateDemo {
public static void main(String[] args) {
Date d1 = new Date();
System.out.println("d1:" + d1);// d:Sat Apr 01 09:10:13 CST 2017
// long time = System.currentTimeMillis();
long time = 1000 * 60 * 60; // 1小时
Date d2 = new Date(time);
System.out.println("d2:" + d2);// d2:Thu Jan 01 09:00:00 CST 1970
//不是 01:00:00 是因为我们使用的是北京时间,北京时间是中国采用北京东八时区的区时作为标准时间
}
}
B:成员方法
public long getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
public void setTime(long time):设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
public class DateDemo {
public static void main(String[] args) {
Date d = new Date();
long time = d.getTime();
System.out.println(time);// 1491009637592
System.out.println(System.currentTimeMillis());// 1491009637592
System.out.println("d:" + d);// d:Sat Apr 01 09:20:37 CST 2017
d.setTime(1000);
System.out.println("d:" + d);// d:Thu Jan 01 08:00:01 CST 1970
}
}
C:日期和毫秒值的相互转换
案例:你来到这个世界多少天了?
2. DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat
A: SimpleDateFormat的构造方法:
public SimpleDateFormat():用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
public SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
这个模式字符串该如何写呢? 通过查看API,我们就找到了对应的模式
y 年
M 年中的月份
d 月份中的天数
H 一天中的小时数(0-23)
m 小时中的分钟数
s 分钟中的秒数
yyyy-MM-dd HH:mm:ss 2017-05-01 12:12:12
yyyy年MM月dd日 HH:mm:ss 2017年05月01日 12:12:12
B:日期和字符串的转换
a:Date -- String(格式化)
public final String format(Date date)
b:String -- Date(解析)
public Date parse(String source)
public class DateFormatDemo {
public static void main(String[] args) throws ParseException{
Date d = new Date();
// 创建格式化对象
SimpleDateFormat sdf1 = new SimpleDateFormat();
String s1 = sdf1.format(d);
System.out.println(s1);// 17-5-1 上午9:50
// 给定模式
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// DateFormat类的 public final String format(Date date)
String s2 = sdf2.format(d);
System.out.println(s2);// 2017年05月01日 09:52:15
//String -- Date
String str = "2008-08-08 12:12:12";
//在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf3.parse(str);
System.out.println(dd);// Fri Aug 08 12:12:12 CST 2008
}
}
C:案例:
制作了一个针对日期操作的工具类。
D:案例:
/*
* 算一下你来到这个世界多少年?
* 分析:
* A:键盘录入你的出生的年月日
* B:把该字符串转换为一个日期
* C:通过该日期得到一个毫秒值
* D:获取当前时间的毫秒值
* E:用D-C得到一个毫秒值
* F:把E的毫秒值转换为年
* /1000/60/60/24/365
*/
public class MyYearOldDemo {
public static void main(String[] args) throws ParseException {
// 键盘录入你的出生的年月日
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的出生年月日(格式为yyyy-MM-dd):");
String line = sc.nextLine();
// 把该字符串转换为一个日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse(line);
// 通过该日期得到一个毫秒值
long myTime = d.getTime();
// 获取当前时间的毫秒值
long nowTime = System.currentTimeMillis();
// 用D-C得到一个毫秒值
long time = nowTime - myTime;
// 把E的毫秒值转换为年
long day = time / 1000 / 60 / 60 / 24 / 365;
System.out.println("你来到这个世界:" + day + "年");
}
}
以上是关于Java_常用类13_DateDateFormatSimpleDateFormat类的主要内容,如果未能解决你的问题,请参考以下文章
DateDateFormat类Calendar类基本类型包装类System类Math类Arrays类大数据运算类