目录
(1)关于Java的24小时制和12小时制
格式里的时如果用hh表示用12小时制,HH表示用24小时制。
例如:
yyyy-MM-dd hh:mm:ss 12小时
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); //小写是12小时
yyy-MM-dd HH:MM:ss 24小时
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:MM:ss”);//大写是24小时的
(2)把数字转成时间
时间转换,拿到一串数字的时候,可以先到这个网站核对下时间戳是否正确。
http://tool.chinaz.com/Tools/unixtime.aspx
在Java里面,用的是毫秒算的,因此,用Long类型的话,需要先把数字转换成Long类型再转成时间。
上代码:
1541647462000 :毫秒算,是2018-11-08 11:11:22
1541647462 毫秒算出是 1970-01-19 04:01:07
1秒=1000毫秒
import static org.junit.Assert.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.junit.Test;
public class test1108 {
@Test
public void test() {
Date date = new Date();
//格式里的时如果用hh表示用12小时制,HH表示用24小时制。MM必须是大写!
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date.setTime(Long.parseLong("1541647462000"));//java里面应该是按毫秒
System.out.println(sdf.format(date));
date.setTime(1541647462);
System.out.println(sdf.format(date));
}
}
运算结果:
2018-11-08 11:24:22
1970-01-19 04:14:07
(3)有趣的问题:HH:mm:ss 和 HH:MM:ss
对于yyyy-MM-dd HH:mm:ss 和 yyyy-MM-dd HH:MM:ss
输出的结果竟然是一样还不报错???
原因:
实际时间:2018年11月8日 16:01:51
HH:MM:ss
HH:mm:ss输出
小编觉得,因为是01 进一位,变成11.但是,并不是!!!
结论:
HH:mm:ss 是正确的输出,但是HH:MM:ss 则是 分钟显示 :11 。无论你是01 02 03 04 08 09分钟,都是显示11,
MM是月份!!!所以变成了 小时:月:秒 。怪不得百度没有这种写法。
(4)日期元素示例
字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y 年 Year 1996 ; 96
M 年中的月份 Month July ; Jul ; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday ; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time ; PST ; GMT-08:00
Z 时区 RFC 822 time zone -0800