建议大家使用Java 8 的日期、时间,而非java.util.Date
建议大家使用Java 8 的日期、时间,而非java.util.Date。
详细原因见:如何在Java 8中愉快地处理日期和时间
总结一下就是,
java.util.Date 太乱,如 月份从0开始、日期和时间的取舍只有自己知道等等。
而java.time.LocalDate则只负责日期,java.time.LocalTime则只负责时间,如果需要日期和时间,还可以使用java.time.LocalDateTime!
以下是几个测试:
package start; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Locale; import org.junit.Test; public class Start1 {
// LocalDate只负责日期 -- 而java.util.Date虽然包裹各种信息,但别人反而不知你实际的取舍。
@Test
public void r1() {
LocalDate now = LocalDate.now();
System.out.println(now); // 2017-02-22 LocalDate min = LocalDate.MIN;
LocalDate max = LocalDate.MAX; System.out.println(min);// -999999999-01-01
System.out.println(max);// +999999999-12-31
} // LocalTime只负责时间,不负责日期。
@Test
public void r2() {
LocalTime noon = LocalTime.NOON;
System.out.println(noon); // 12:00
System.out.println(LocalTime.MIDNIGHT); // 00:00
System.out.println(LocalTime.now());// 15:53:55.036 } // LocalDate获取年月日
@Test
public void r3() {
LocalDate r = LocalDate.of(2012, 11, 27);
System.out.println(r);
System.out.println(r.getYear());//
System.out.println(r.getMonthValue());//
System.out.println(r.getMonth());// NOVEMBER
System.out.println(r.getDayOfYear());//
System.out.println(r.getDayOfMonth());//
System.out.println(r.getDayOfWeek());// TUESDAY
} // LocalDate获取年月的最后一天/第一天
@Test
public void r31() {
LocalDate now = LocalDate.now();
LocalDate withDayOfMonth = now.withDayOfMonth(1);// 修改月的天
System.out.println(withDayOfMonth);
LocalDate firstday = now.with(TemporalAdjusters.firstDayOfMonth());
System.out.println(firstday);
LocalDate lastday = now.with(TemporalAdjusters.lastDayOfMonth());
System.out.println(lastday); LocalDate lastdayofyear = now.with(TemporalAdjusters.lastDayOfYear());
System.out.println(lastdayofyear);
} // LocalDate解析字符串
@Test
public void r4() {
LocalDate date = LocalDate.parse("2017-11-27");
System.out.println(date);// 2017-11-27 // #####
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu/MM/dd");
LocalDate date2 = LocalDate.parse("2017/11/27", formatter);
System.out.println(date2); // ######
// DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("uuuu/MM/dd", Locale.CHINESE);
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("MM/dd/uuuu", Locale.CANADA_FRENCH);
LocalDate date3 = LocalDate.parse("11/27/2017", formatter3);
System.out.println(date3);
} @Test
public void r5() {
LocalTime now = LocalTime.now();
System.out.println(now);
LocalTime r = LocalTime.of(22, 18);
// LocalTime r = LocalTime.of(22, 18, 57);
System.out.println(r.getHour());//
System.out.println(r.getMinute());//
System.out.println(r.getSecond());//
System.out.println(r.getNano());//
} @Test
public void r6() {
LocalTime time = LocalTime.parse("22:18:59");
System.out.println(time); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm/ss");
LocalTime t = LocalTime.parse("19:30/31", formatter);
System.out.println(t); // time.plus()
// time.minus()
} @Test
public void r7() {
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
String str = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE));
System.out.println(str); // now.plus()
// now.minus()
LocalDateTime withHour = now.withHour(22); // 修改了Hour
System.out.println(withHour);
LocalDateTime withMonth = now.withMonth(8);
System.out.println(withMonth); // 修改了Month
} }
引用:
JDBC 最新JDBC映射将把数据库的日期类型和Java 8的新类型关联起来: SQL -> Java
--------------------------
date -> LocalDate
time -> LocalTime
timestamp -> LocalDateTime 再也不会出现映射到java.util.Date其中日期或时间某些部分为0的情况了。
另外,关于如何正确的存储日期和时间,建议使用绝对时间,即 System.currentTimeMillis() 得到的值,存为BigInt或者Real类型即可。
这样就不再需要考虑时区转换等问题!
详见:如何正确地处理时间
建议大家使用Java 8 的日期、时间,而非java.util.Date的更多相关文章
- Java 8 新日期时间 API
Java 8 新日期时间 API 1. LocalDate.LocalTime.LocalDateTime LocalDate.LocalTime.LocalDateTime 实例是不可变的对象,分别 ...
- java里的日期时间
为了更好理解java的日期时间类,在这里我们先介绍一下关于历法.标准时间的一些概念. 历法有很多种,我们大中华上下五千年,自然也有自己的历法,生活中我们通常把自己传统的历法叫做农历,也有人叫它阴历或夏 ...
- java android中日期时间 问题总结
Date 类型: Date date = new Date(); // 代表获取当前系统日期和时间 System.out.println(date); 使用类的方法设置时间和日期:(通过该方法初始 ...
- java基础之日期时间工具类
package zy.test; import java.sql.Timestamp; import java.text.ParseException; import java.text.ParseP ...
- 在java中进行日期时间比较的4种方法
1. Date.compareTo() java.util.Date提供了在Java中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数之后, ...
- 使用Java编写一个日期时间封装类
package base; import java.util.GregorianCalendar; import java.util.StringTokenizer; import java.util ...
- java设定一个日期时间,加几分钟(小时或者天)后得到新的日期
//返回的是字符串型的时间,输入的 //是String day, int x public static String addDateMinut(String day, int x){ SimpleD ...
- java中自带时间类使用方法实例 Date,Timestamp,DateFormat
我们将以Java自带的时间日期类和当中的处理函数进行分析. 一.与时间日期有关的类. java.util.Date. 实现类,其对象具有时间.日期组件. java.util.Calendar. 抽象类 ...
- 解决elementui日期时间选择器提交时与后台date类型不匹配问题
问题描述: 在前端使用elementui的日期时间选择器后,在通过axios进行提交的时候,前端控制台出现了400(数据类型不匹配的错误)的错误. <el-form-item label=&qu ...
- Java获取系统日期时间
方法一:利用Calendar类来获取当前日期和时间,代码如下: /** * 获取系统时间 * @return */ public String getDate(){ Calendar calendar ...
随机推荐
- django rest_framework入门
1.rest_framework的作用 1)可以对orm和非orm资源序列化 2)支持restful风格编程(POST,PUT,PATCH) 3)使用类视图编写API的view,而不是函数视图,类视图 ...
- zsh与oh-my-zsh
在开始今天的 MacTalk 之前,先问两个问题吧: 1.相对于其他系统,Mac 的主要优势是什么?2.你们平时用哪种 Shell?…… 第一个童靴可以坐下了,Mac 的最大优势是 GUI 和命令行的 ...
- ubuntu mysql 远程连接问题解决方法
在shell下输入mysql -uroot -p是可以登录的,所以问题应该是mysql不允许root用户远程登录的问题,于是通过输入下面命令: GRANT ALL PRIVILEGES ON *.* ...
- Kali Linux安装Remmina无法加载RDP插件
原因是确少匹配的 libfreerdp库 可以到这里下载 http://ftp.de.debian.org/debian/pool/main/f/freerdp/ 我的电脑是64位的 我下载的是ht ...
- Java后端测试概述
[本文出自天外归云的博客园] 多种单测技术 1. 要学会Spring MVC/Boot测试中自带的mock方法. 2. 学会junit中的方法,对于注解的使用等. 3. 学会使用结合第三方Mockit ...
- Codeforces Round #215 (Div. 2) D. Sereja ans Anagrams
http://codeforces.com/contest/368/problem/D 题意:有a.b两个数组,a数组有n个数,b数组有m个数,现在给出一个p,要你找出所有的位置q,使得位置q q+ ...
- Eigen教程(10)
整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html 混淆 在Eigen中,当变量同时出现在左值和右值,赋值操作可能会带来混淆问题.这一篇 ...
- 基于jQuery CSS3鼠标点击动画效果
分享基于jQuery CSS3鼠标点击动画效果支持图片或内容滑动,允许设置动画延迟效果.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="co ...
- Android ListView的使用(三)
前两节关于ListView的,已经使用了ArrayAdapter,SimpleAdapter了,两个比较基本的适配器 这里来用一个用的最多的一个适配器BaseAdapter. 还是先上效果图.大概和微 ...
- [转]MySQL中int(11)最大长度是多少?
原文地址:https://blog.csdn.net/allenjay11/article/details/76549503 今天在添加数据的时候,发现当数据类型为 int(11) 时,我当时让用户添 ...