廖雪峰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 期末总 ...
随机推荐
- 一天一点Zynq(1)xilinx-arm-linux交叉编译链 安装总结以及资源更新
结束了对xilinx-arm-linux交叉编译链安装后,总结一下整个过程,方便后来的研究者们,少走点弯路. 关于xilinx-arm-linux交叉编译链的安装,网上一搜一大把,可是有的资料中的资源 ...
- 【转】ASP.NET Core开发之HttpContext
ASP.NET Core中的HttpContext开发,在ASP.NET开发中我们总是会经常用到HttpContext. 那么在ASP.NET Core中要如何使用HttpContext呢,下面就来具 ...
- 微服务解决框架--SpringCloud
- 算法-最通俗易懂的KMP算法详解
有些算法,适合从它产生的动机,如何设计与解决问题这样正向地去介绍.但KMP算法真的不适合这样去学.最好的办法是先搞清楚它所用的数据结构是什么,再搞清楚怎么用,最后为什么的问题就会有恍然大悟的感觉.我试 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.3 Displaying Classes in a Layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.3 Displaying Classes in a Layer 一.前言 关于第一节的 ...
- 201621123075 Week03-面向对象入门
1.本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1 写出你认 ...
- 一、JAVA变量类型:①类变量与实例变量的异同点
在JAVA中,变量使用前必须声明,格式如下: int a; //单个变量声明 int b, c, d; //多个变量一起声明 int e = 1, f = 2, g = 3; //声明时同时赋值(初始 ...
- ADV7482&TP2825开发之总结
ADV7482&TP2825开发之总结 这一两个月在项目里接触到了两个视频解码芯片,主要是使用了两颗芯片的CVBS(NTSC)解码功能.外接CVBS Video接入解码芯片,芯片8位并行输出端 ...
- C# 时间控件 竖直进度条 饼图显示 仪表盘 按钮基础控件库
Prepare 本文将使用一个NuGet公开的组件来实现一些特殊的控件显示,方便大家进行快速的开发系统. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台 ...
- Js 编程题汇总
Coding题: 1. 预测以下代码的输出结果: var Foo = function(a) { function bar() { console.log(a); }; this.baz = func ...