一直以来对于知识只是拿来,没有经过自己的思考。
带着问题去思考和学习
1.基本介绍
在Java8之前,对于日期的操作设计的很复杂,特别是当涉及到日期的计算时,如计算当前时间下45天后最近的一个星期一之类稍复杂的运算,使用Calendar类进行操作将会是令人感到复杂与麻烦的,有兴趣的可以参见常用的时间库Joda-time。
2.怎么让String和Date相互转换?
这里的Date是java.util.Date,当然还有一个 java.sql.Date,这里讲的是前者。
首先要说明的是DateFormat,这是一个抽象类,平常主要使用到的是它的子类SimpleDateFormat。
--将String转换成Date,再转换成指定格式的String
@Test
public void testDateOne() throws ParseException{
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2015-06-12");
String now = new SimpleDateFormat("yyyy年MM月dd日").format(date);
System.out.println(date+"*****"+now);
}
值得注意的是SimpleDateFormat不是线程安全的,内部使用的是同一个Calendar对象,所有这里使用的是不同的匿名SimpleDateFormat对象。
--格式化Date对象并打印返回的字符串
@Test
public void testDateTwo(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss E") ;
Date date = new Date();
System.out.println(format.format(date));
}
3.常用格式字母代表的意思分别是什么?
字母 | 含义 |
y | 年 |
M | 月 |
D | 处于一年中所有天的位置 |
d | 处于当前月中的天数 |
H | 24小时制 如16:00代表下午4点 |
h | 12小时制 |
m | 分 |
s | 秒 |
S | 毫秒 |
E | 星期几 |
4.如何对日期进行计算,例如如获取去年的昨天?
Calendar的使用方法并不复杂,可以参见这一篇 :Calendar的基础使用可以参考这篇。
//求去年的昨天的日期 并以指定的格式输出
Calendar ca = Calendar.getInstance();
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss ");
ca.setTime(now);
ca.add(Calendar.YEAR, -1);
ca.add(Calendar.DAY_OF_MONTH, -1);
System.out.println("here: "+sdf.format(ca.getTime()));