今天突然想给每个 Category 下面的文章列表加个日期方便 review 如果直接使用 post.date 输出的日期格式为 2013-11-29 00:00:00 -0500 精确到秒也真的毫无必要
(DateFormat.java:355) -125744830738000 -61916917138000 -61916917138000 at com.tiza.ngp.rp.sanhui.util.Utils...二、简单分析 public abstract class DateFormat extends Format { /** * The {@link Calendar} instance...* @serial */ protected Calendar calendar; ... } DateFormat类使用了Calendar对象来维护parse和...format过程中的日期时间值,当多线程同时使用同一个DateFormat对象,也就是多线程同时使用同一个Calendar对象来维护parse或format过程的日期时间值,必定会发生错乱。...三、解决方案 使用中要么为每个线程创建一个DateFormat实例,要么对其外部加锁。
DateTimeFormatter 纠正了这个设计失误,变为了线程安全的。...使用方法 DateTimeFormatter 提供的方法命名上遵循 java.time 包的一贯原则,提供了很多静态方法来生成一个 DateTimeFormatter。...格式化当地时间: // 作为静态字段,线程安全,各个方法都可以使用 public static DateTimeFormatter formatter = DateTimeFormatter.ofPattern...上例使用的是当地时间,如果一个跨国公司要处理时间,就必须考虑到不同国家所在的时区不同,使用服务器所配置的时区就不行了,必须显式地将时区加到处理代码中。...public static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z"); public
参数取值范围 Java 8 的日期格式化和解析 Java 8 提供的日期格式化类是 java.time.format.DateTimeFormatter,DateTimeFormatter 中本身没有提供日期格式化和日期解析方法...日期格式化 日期格式化方法是 format,这三个类每一个都有 String format(DateTimeFormatter formatter),参数 formatter 是 DateTimeFormatter...format LocatDate time; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM dd yyyy HH:mm:ss...-> LocalTime timestamp -> LocalDateTime LocalDateTime.now() 慢了8个小时的问题排查 原因是 java 代码中将 new Date() 插入到...dateTimeFormatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"); System.out.println(dateTimeFormatter.getLocale
Java格式化日期 微秒 本文主要讲述Java日期格式化及格式化日期到微秒 Date、LocalDateTime格式化微秒值 java代码TestTime.java如下 package com.dongao.test...java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter...) { return new SimpleDateFormat(dateFormat); } public static DateTimeFormatter getDateTimeFormat...(String dateFormat) { return DateTimeFormatter.ofPattern(dateFormat); } } 格式化结果执行 通过执行结果可以看到用...SimpleDateFormat对含有微秒值的时间格式在字符串转Date时除了会出现精度丢失的情况,部分时间还会出现转换错误的情况,而用DateTimeFormatter对含有微妙值的时间格式字符串转LocalDateTime
System.currentTimeMillis(): System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,类型为long; Date: 类 Date 表示特定的瞬间,精确到毫秒...从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。...= new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss"); String day = dateFormat.format(time); System.out.println..."); String day = dateFormat.format(date); System.out.println(day); 3、获取当前的日期(相对于月) long timeMillis =...LocalDate localDate = LocalDate.now(); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern
DateTimeFormatter日期格式化 DateTimeFormatte 使用旧的Date对象时,我们用SimpleDateFormat进行格式化显示。...使用新的LocalDateTime或ZonedLocalDateTime时,我们要进行格式化显示,就要使用DateTimeFormatter。...和SimpleDateFormat不同的是,DateTimeFormatter不但是不变对象,它还是线程安全的。...而DateTimeFormatter可以只创建一个实例,到处引用。...dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime parse
dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // 也可以: yyyy年MM月dd日 hh:mm:ss // DateFormat....parse(str); System.out.println(parse); } } 常用类 5 Calendar类(日历类) 在1.7 1.8还能用,到高版本也已经过时了。...java.time.format.DateTimeFormatter; /** JDK1.8中新增加的 */ public class MyTimeA { public static void main...LocalDate 这个只含有年月日 LocalDate localDate = LocalDate.now(); System.out.println(localDate); //DateTimeFormatter...DateTimeFormatter dft = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); String format = localDate.format
> dateformat = new ThreadLocalDateFormat>(){ @Override protected DateFormat initialValue...dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd"); // localDate Callable<...57 LocalDate和LocalTime 参考LocalDateTime 使用Instant Instant Instant : 时间戳(以Unix 元年: 1970年1月1日 00:00:00 到某个时间之间的毫秒值...DateTimeFormatter @Test public void test6(){ // 使用提供的格式化类 DateTimeFormatter isoDate = DateTimeFormatter.ISO_DATE...dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String format1 = now.format
(timeFormat))); builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat...(dateFormat))); builder.deserializers(new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern...(dateTimeFormat))); }; } ok,到这里,在当前项目中已经对日期的格式化输入输出统一配置处理了。...(timeFormat))); builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat...(dateFormat))); builder.deserializers(new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern
dateFormat0.format(strDate1)); System.out.println("2020-01-01 to YYYY/MM/dd: " + dateFormat0.format(strDate2...)); // 小写 YYYY DateFormat dateFormat1 = new SimpleDateFormat("yyyy/MM/dd"); System.out.println("2019-..." + dateFormat1.format(strDate2)); 网友贴出的程序输出结果: ?...import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Demo {...public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern
until(i,ChronoUnit.HOURS); //-6 i.until(i2,ChronoUnit.HOURS); //6 '(i2.until(i,ChronoUnit.HOURS); i2到i1...DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE); 还可使用 DateFormat 进行解析。...可以将不同选项传入这些工厂方法,以控制结果的长度(从 SHORT 到 MEDIUM 到 LONG 再到 FULL)。...$13 20小时"; DateTimeFormatter fomatter2 = DateTimeFormatter.ofPattern("yyy?$MMM?...2.3.2 :时间对象转换字符串: DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy==MM==dd HH时mm分ss秒")
通过如下一行代码进入到DateFormat类的源码中。...在高并发场景下,一个线程对ParsePosition类中的索引进行修改,势必会影响到其他线程对ParsePosition类中索引的读操作。这就造成了线程的安全问题。...DateFormat dateFormat = threadLocal.get(); if(dateFormat == null){ dateFormat = new...方式 DateTimeFormatter是Java8提供的新的日期时间API中的类,DateTimeFormatter类是线程安全的,可以在高并发场景下直接使用DateTimeFormatter类来处理日期的格式化操作...DateTimeFormatter是Java 8中提供的处理日期和时间的类,DateTimeFormatter类本身就是线程安全的,经压测,DateTimeFormatter类处理日期和时间的性能效果还不错
formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss yyyy");LocalDateTime dateTime = LocalDateTime.parse...(DateTimeFormatter.java:1949) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851...可以传入一个本地化参数(Locale.US)解决这个问题 正例: String dateStr = "Wed Mar 18 10:00:00 2020";DateTimeFormatter formatter...SimpleDateFormat继承了 DateFormat DateFormat类中维护了一个全局的Calendar变量 sdf.parse(dateStr)和sdf.format(date),都是由...> threadLocal = new ThreadLocalDateFormat>(); public static DateFormat getDateFormat() {
在高并发场景下,一个线程对ParsePosition类中的索引进行修改,势必会影响到其他线程对ParsePosition类中索引的读操作。这就造成了线程的安全问题。 以上问题分析的结论确实存在错误。...通过查看SimpleDateFormat类的源码,我们得知:SimpleDateFormat是继承自DateFormat类,DateFormat类中维护了一个全局的Calendar变量,如下所示。...DateFormat dateFormat = threadLocal.get(); if(dateFormat == null){ dateFormat = new...方式 DateTimeFormatter是Java8提供的新的日期时间API中的类,DateTimeFormatter类是线程安全的,可以在高并发场景下直接使用DateTimeFormatter类来处理日期的格式化操作...DateTimeFormatter是Java 8中提供的处理日期和时间的类,DateTimeFormatter类本身就是线程安全的,经压测,DateTimeFormatter类处理日期和时间的性能效果还不错
System.out.println("格式化前:localDateTime:" + localDateTime + " Date:" + date); //格式化LocalDateTime、Date DateTimeFormatter...localDateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat dateFormat...System.out.println("格式化后:localDateTime:" + localDateTimeFormat.format(localDateTime) + " Date:" + dateFormat.format
public interface Printer { String print(T object, Locale locale); } Parser 解析接口,根据Locale信息解析字符串到T...因此本文涉及到joda的实现都略过,只看JSR310标准实现。...DateFormat DateFormat根据当前语言环境格式化日期和时间。DateFormat是一个抽象类,所以不能直接new创建实例对象。但该类为我们提供了工厂方法方便我们使用。...format = DateFormat.getDateInstance(DateFormat.DEFAULT,Locale.CANADA);//获取加拿大的格式化日期 该抽象类的实例,都是返回默认的模版来显示的...常用MessageFormat的静态方法format,该方法接收一个字符串的模式和一组对象(对象数组),按照模式形式将格式化的对象插入到模式中,然后返回字符串结果。
示例:使用 DateFormat 进行日期格式化 import java.text.DateFormat; import java.util.Date; import java.util.Locale;...dateFormat = DateFormat.getDateInstance(DateFormat.LONG, Locale.FRANCE); // 法国的日期格式 System.out.println...Java 8 中的日期时间本地化 Java 8 引入了 java.time 包,其中的 DateTimeFormatter 提供了更多本地化日期和时间格式化的功能。...示例:使用 DateTimeFormatter 格式化日期 import java.time.LocalDate; import java.time.format.DateTimeFormatter;...formatter = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.FRENCH); System.out.println("
; /** * now=2023-06-30 * after=2023-07-04 * afterTime=2023-07-04T00:00:01 * dateFormat=06/30-07/...DEFAULT_PATTERN_NEW_SHORT); String rentViewFormat = rentStr + "-" + revertStr; System.out.println("dateFormat...} public static LocalDateTime parseStringToDateTime(String time, String format) { DateTimeFormatter...df = DateTimeFormatter.ofPattern(format); return LocalDateTime.parse(time, df); } public...formatter = DateTimeFormatter.ofPattern(pattern); return dateTime.format(formatter); }