廖雪峰Java7处理日期和时间-4最佳实践-最佳实践
jdk提供了2套新旧的API来处理日期和时间。
- java.util
* Date
* Calendar - java.time(JDK>=1.8)
* Localdate
* LocalTime
* LocalDateTime
* ZonedDateTime
* Instant
java.sql时间
java.util.Date表示日期和时间:
- getYear()/getMonth()/getDate()
- getHours()/getMinutes()/getSeconds()
java.sql.Date继承自java.util.Date,但去除了时分秒,仅表示日期:
getHours() /getMinutes() /getSeconds() {
throw new IllegalArgumentException();
}
类似java.sql.Time仅表示时间
getYear() /getMont() /getDate() {
throw new IllegalArgumentException();
}
java.sql.TimeStamp表示SQL数据库的TIMESTAMP
int nanos:将毫秒数清零,用int表示纳秒
之所以介绍这几个类,是因为将来在访问关系数据库的时候,需要把Java对象和数据库类型做正确的映射。

新旧API之间的转换
旧的API:java.util.Date, java.util.Calendar
新的API:Instant, ZonedDateTime, LocalDateTime
1.先
public static void main(String[] args) {
System.out.println(epoch2String(1480468500000L,Locale.CHINA,"Asia/Shanghai"));
System.out.println(epoch2String(1480468500000L,Locale.US,"America/New_York"));
//Locale对象是地区,如CHINA,US,UK,CANDA
//FormatStyle有FULL,MEDIUM,SHORT,LONG
DateTimeFormatter dtf1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
DateTimeFormatter dtf2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
DateTimeFormatter dtf3 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
DateTimeFormatter dtf4 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
System.out.println(dtf1.format(ZonedDateTime.now()));
System.out.println(dtf2.format(ZonedDateTime.now()));
System.out.println(dtf3.format(ZonedDateTime.now()));
System.out.println(dtf4.format(ZonedDateTime.now()));
}
static String epoch2String(long epoch, Locale lo, String zoneId){
Instant ins = Instant.ofEpochMilli(epoch);
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM,FormatStyle.SHORT);
return f.withLocale(lo).format(ZonedDateTime.ofInstant(ins,ZoneId.of(zoneId)));
}

廖雪峰Java7处理日期和时间-4最佳实践-最佳实践的更多相关文章
- 廖雪峰Java7处理日期和时间-3java.time的API-2ZonedDateTime
ZonedDatetime = LocalDateTime + ZoneId ZonedDateTime:带时区的日期和时间 ZoneId:新的API定义的时区对象(取代几句的java.util.Ti ...
- 廖雪峰Java7处理日期和时间-3java.time的API-1LocalDateTime
1.java.time提供了新的日期和时间API: LocalDate/LocalTime/LocalDateTime ZoneDateTime/ZoneId Instant Formatter 新A ...
- 廖雪峰Java7处理日期和时间-2Data和Calendar-1Date
计算机中如何存储和表示日期和时间 Epoch Time:从1970年1月1日零点(格林威治时区/GMT+00:00)到现在经历的秒数,也叫timestamp, 例如: 秒级: * 北京 2016-11 ...
- 廖雪峰Java7处理日期和时间-1概念-1日期和时间
1.日期 日期是指某一天,如2016-11-20,2018-1-1 2.时间有2种: 不带日期的时间:14:23:54 带日期的时间:2017-1-1 20:21:23,唯一确定某个时刻 3.时区 时 ...
- 廖雪峰Java7处理日期和时间-2Data和Calendar-2Calendar
Calendar类 历史上有许多纪年方法,其差异太大了.为了统一计时,通常采用格里高利日历. 1.创建Calendar对象 Calenda类是一个抽象类,所以不能使用构造器来创建Calendar对象. ...
- Java 中的日期与时间
Java 日期时间 标签 : Java基础 Date java.util.Date对象表示一个精确到毫秒的瞬间; 但由于Date从JDK1.0起就开始存在了,历史悠久,而且功能强大(既包含日期,也包含 ...
- 廖雪峰Python电子书总结
函数 1.注意:函数的默认参数必须指向不可变对象 未修改前: def add_end(L=[]): L.append('END') return L 存在的问题:如果连续调用多次,会出现多个 'END ...
- git常用命令总结--廖雪峰老师Git教程命令总结
学习了廖雪峰老师的Git教程之后的命令总结,重点关于git和远程仓库的东西. 如果没有学过,这是传送门 下面这个图很重要 一.git初始化本地仓库和配置 echo "想输入到文件的内容,一般 ...
- 【学习总结】Git学习-参考廖雪峰老师教程六-分支管理
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
随机推荐
- 菜鸟脱壳之脱壳的基础知识(三)——寻找OEP
这节我们来讲讲如何寻找一个程序的OEP,即Original Entry Point.一些PE加壳程序在被加密的程序上面加了一个区段(有的壳也会合并区段),当外壳代码执行完毕以后,会跳到程序的本身的代码 ...
- 和系统运行状况相关的Shell命令总结
1. Linux的实时监测命令(watch): watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动运行.该命令最为常用的两个选项是-d和-n,其中-n表 ...
- Spring Boot + Spring Cloud 实现权限管理系统(解决跨域问题)
什么是跨域? 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 如果一个请求地址里面的协议.域名和端口号都相同,就属于同源. ...
- JavaScript下实现交换数组元素上下移动例子
// 交换数组元素 var swapItems = function(arr, index1, index2) { arr[index1] = arr.splice(index2, ...
- 负载均衡----实现配置篇(Nginx)
同类文章:负载均衡----概念认识篇 吐槽:自从那篇“探讨负载均衡”那篇文章被博客园吐槽后,心里极度不平衡,思来想去还是把名字改成“负载均衡----概念认识篇”,再加多几篇文章来诠释上篇文章的精华所在 ...
- python ----列表、字符串、元组之间转换小结
字符串转换列表 li =list("adfadfsf") #内部使用for循环 print(li) #输出结果:['a', 'd', 'f', 'a', 'd', 'f', 's' ...
- Mysql怎么判断繁忙 checkpoint机制 innodb的主要参数
Mysql怎么判断繁忙,innodb的主要参数,checkpoint机制,show engine innodb status 2018年07月13日 15:45:36 anzhen0429 阅读数 ...
- vuex-Module
Vuex 允许将 store 分割成模块(module). 每个模块拥有自己的 state.mutation.action.getter.甚至是嵌套子模块 const moduleA = { stat ...
- Beta 冲刺 (2/7)
Beta 冲刺 (2/7) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务 文字/口头描述 为utils_wxpy.py添加注释 ...
- ADO.NET 中的五个主要对象
Connection:主要用来开启程序和数据库的连接 Command:主要是用来对数据库发出一些指令,. DataAdapter;主要在数据源以及DataSet之间执行数据库的传输工作 DataSet ...