常用格式为:yyyy-MM-dd HH:mm:ss
以 2019-12-31 06:07:59:666 时间为例:
字符 |
含义 |
Example |
y(小写的y) |
年 |
yyyy---->2019 |
M(大写的M) |
月 |
MM---->12 |
d(小写的d) |
一月中的天数 |
dd---->31 |
H(24 小时制,大写的H) |
小时(0-23) |
HH---->18 |
h(12 小时制,小写的h) |
小时(1-12) |
hh---->06 |
m(小写的m) |
分 |
mm---->07 |
s(小写的s) |
秒 |
ss---->59 |
S(大写的S) |
毫秒 |
SSS---->666 |
Y(大写的y) |
Week Year |
YYYY---->2020 |
D(大写的D) |
一年中天数 |
DD---->365 |
yyyy-MM-dd与YYYY-MM-dd区别在哪里?
Y 代表 Week Year,表示当天周所在的年份。这种方式将会把一年划分成52 周/53周(类似于闰年的概念,每隔几年将会增加一周)。Week Year下每周仅属于某一年,如果某年的第一周或最后一周跨年,就会导致部分日期年份与实际不符。
Week Year 存在两种标准:
ISO 8601:国际标准,每周从周一开始,每年的第一周至少包含 4 天
Common:通用标准,每周从周日开始,每年的第一周至少包含 1 天
使用 ISO 8601 标准,分别看一下最后一周跨年以及第一周跨年的例子。
2015 年最后一周跨年,2016 前三天(与2015年12月的前四天默认是一周,是2015的周)使用 YYYY 最后结果为 2015,时间看起来被回退了。
2020 年第一周跨年,2019 年最后两天(不足4天,所以默认为下周,下周为2020年的周)使用 YYYY 结果为 2020。
代码验证
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
// 将指定时间转换成时间戳,再由时间戳转换成时间
String Stime = "2015-01-01 17:17:22"; // 处理前的时间
long Ltime = 0; // 时间戳
System.out.println("处理前的时间:" + Stime);
// 时间转为时间戳
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date2 = simpleDateFormat.parse(Stime);
Ltime = date2.getTime();
System.out.println("时间转时间戳结果:" + Ltime);
} catch (ParseException | java.text.ParseException e) {
e.printStackTrace();
}
//将时间戳转换为时间
String res = simpleDateFormat.format(Ltime);
System.out.println("时间戳转时间结果:" + res);
}
}
运行结果:
处理前的时间:2015-01-01 17:17:22
时间转时间戳结果:1420103842000
时间戳转时间结果:2015-01-01 17:17:22
可以看出两次时间是一样的。
将代码中的yyyy改为YYYY后
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
运行结果:
处理前的时间:2015-01-01 17:17:22
时间转时间戳结果:1419758242000
时间戳转时间结果:2015-12-28 17:17:22
可以看出两次时间不是一样的。
oracle和java的日期格式的差异
java中的的日期格式为:
yyyy-MM-dd HH:mm:ss:代表将时间转换为24小时制,例: 2020-01-07 13:21:55
yyyy-MM-dd hh:mm:ss:代表将时间转换为12小时制,例: 2020-01-07 03:24:21
oracle中的日期格式为(不区分大小写):
yyyy-MM-dd HH24:mi:ss:代表oracle中的24小时制,例:2020/1/7 13:21:55
yyyy-MM-dd HH:mi:ss: 代表oracle中的12小时制,例:2020/1/7 9:21:55
之所以 oracle和java不同,是因为我们知道oracle是不区分大小写的,所以java中根据大小写来代表24小时和12小时的表达式在oracle中就会出问题,oracle中将24小时的时和分做了特殊处理.如上所示,在hh后面加上了24,将mm改为了mi.文章来源:https://www.toymoban.com/news/detail-744181.html
大部分内容转载自: 关于日期格式你必须知道的坑( yyyy-MM-dd HH:mm:ss SSS)_yyyy-mm-dd hh:mm:ss.sss_37358143的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-744181.html
到了这里,关于Java 日期格式(yyyy-MM-dd HH:mm:ss SSS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!