java 8及以下版本的日期时间格式化与解析

本篇文章涵盖多种字符串日期时间格式化以及日期时间解析,包括java8中的日期时间解析与格式化

下图阐述了什么是时间格式化,什么是时间解析

如上图所示 Date---->String 称之为格式化(format), String --->Date 称之为解析(parse), 目标类型是字符串叫格式化,目标类型是日期对象叫解析,读者注意上图箭头的方向,上图节选自  <<java疯狂讲义>>

1,SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

是的,别问,论日期格式化解析,问就是SimpleDateFormat,日常写代码万年不变的就是它,嗯,用的最多的也是它,见过别人的代码里最多的也是它;

          //时间格式化1         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2         String dateStr = sdf.format(new Date());
3         System.out.println(dateStr);//打印 2019-10-20 14:14:40

上面代码先是创建SimpleDateFormat对象,然后在该类的构造方法中写了一个pattern(日期时间模板).然后调用该对象的format方法传入Date对象,记得楼主刚学java的时候,甚至还背过这个模板,什么大妹妹,小弟弟之类的,然后还是写错了....

能不能不写这个时间模板呢,用屁股也能想到当然是可以的呢!

          //时间格式化1         Date date = new Date();
2         String dateStr = String.format("%TF %TT", date,date);
3         System.out.println(dateStr);// 输出 2019-10-20 14:21:03

你会发现上述代码一毛一样,这是String类的format方法提供的时间格式化,format方法的参数1:格式化模板,参数2:是一个可变参数

参数2的多少取决于你想格式化成什么样子,比如说 yyyy-MM-dd HH:mm:ss 这种是由日期和时间两部分组成,因此可变参数是两个,前面的格式字符串也是两个

格式字符串中的字面代表的含义在java API中有,在  java.util.Formatter 这个类下有详细说明以及实例

‘t‘, ‘T‘  日期/时间  日期和时间转换字符的前缀   ‘F‘  ISO 8601 格式的完整日期    ‘T‘  24 小时制的时间

楼主的同事,同学曾经坦言,开发多年居然没看多API文档,虽然 JDK API 1.6中文版已经很老了  里面歪果仁翻译的也不是人话  但它毕竟最权威,里面的实例比网上复制的更加令人信服

2,DateFormat

//时间格式化
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);//参数1代表日期,参数2代表时间
String dateStr = df.format(new Date());
System.out.println(dateStr); //输出 2019-10-20 14:44:19

如果你觉得  DateFormat.MEDIUM  太长的话,可以考虑静态导入 import static java.text.DateFormat   是的,IDE工具已经为你做了太多,可能你都忘了静态导入是干嘛的了

静态导入后是这样的了   DateFormat df = DateFormat.getDateTimeInstance(MEDIUM,MEDIUM);

         //时间解析
String str = "2019-01-01 12:00:00";
Date date = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM).parse(str);
System.out.println(date);  //输出 Tue Jan 01 12:00:00 CST 2019

嗯,是的,楼主已经不想写yyyy-MM-dd HH:mm:ss 了

3,DateTimeFormatter

          //时间格式化        String dateStr = DateTimeFormatter.ofPattern("现在是yyyy-MM-dd HH:mm:ss 是今年的第D天").format(LocalDateTime.now());
        //只能自定义模板获取这种格式的了
       //String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));  //反过来调用也可以的呦

       System.out.println(dateStr); //输出  现在是2019-10-20 15:07:58 是今年的第293天
          //时间解析        LocalDateTime local = LocalDateTime.parse("2019-01-01 12:00:00",DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        Date date = Date.from( local.atZone( ZoneId.systemDefault()).toInstant());//转换成Date
        System.out.println(date); //输出 Tue Jan 01 12:00:00 CST 2019

原文地址:https://www.cnblogs.com/yanyan-rourou/p/11707728.html

时间: 2024-10-15 18:05:38

java 8及以下版本的日期时间格式化与解析的相关文章

Java 8 新特性:Java 类库的新特性之日期时间API (Date/Time API ) ——诺诺&quot;涂鸦&quot;记忆

----------   诺诺学习技术交流博客.期待与您交流!    ---------- 详情请查看:http://blog.csdn.net/sun_promise  日期时间API (Date/Time API ) 1.Java8之前java.util.Date和Calendar类的弊端 1)最开始的时候,Date既要承载日期信息,又要做日期之间的转换,还要做不同日期格式的显示,职责较繁杂(不遵守单一职责). 后来从JDK 1.1 开始,这三项职责分开了: 使用Calendar类实现日期和

String.Format,DateTime日期时间格式化集锦

DateTime dt = DateTime.Now;//2010年10月4日 17点05分 string str = ""; //str = string.Format("{0:y yy yyy yyyy}", dt); //10 10 2010 2010 //str = String.Format("{0:M MM MMM MMMM}", dt); //10 10 十月 十月 //str = String.Format("{0:d

String.Format,DateTime日期时间格式化

DateTime dt = DateTime.Now;//2010年10月4日 17点05分            string str = "";            //str = string.Format("{0:y yy yyy yyyy}", dt); //10 10 2010 2010            //str = String.Format("{0:M MM MMM MMMM}", dt); //10 10 十月 十月 

Swift教程_基础技术_获取当前日期时间、日期时间格式化及转换

Swift教程_基础技术_类型转换(父子类转换:Int.Double.String转换) Swift教程_基础技术_获取当前日期时间.日期时间格式化及转换 1.获取当前日期时间 var nowDate = NSDate() var formatter = NSDateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" var dateString = formatter.stringFromDate(nowDate) pri

js -- 日期时间格式化

/** * js日期时间格式化 * @param date 时间读对象 * @param format 格式化字符串 例如:yyyy年MM月dd日 hh时mm分ss秒 * @returns {string} 返回格式化后的字符串 */function dateFormat (date, format) { var o = { "M+": date.getMonth() + 1, //month "d+": date.getDate(), //day "h+

PHPCMS V9调用时间标签 |日期时间格式化

PHPCMS V9 如何调用时间标签,下面分享常见的调用时间标签 |日期时间格式化 1.日期时间格式化显示: a标准型:{date('Y-m-d H:i:s', $rs['inputtime'])} 输出为:2013-01-31 13:15:10 b拆分型:{date('Y',$rs[inputtime])}年{date('m',$rs[inputtime])}月{date('d',$rs[inputtime])}日 输出为:2013年01月31日 c扩展型: {date('Y',$inputt

Java 之 JDK 1.8 新增日期时间类型

一.原来的日期时间 Java1.0中包含了一个Date类,但是它的大多数方法已经在Java 1.1引入Calendar类之后被弃用了.而Calendar并不比Date好多少.它们面临的问题是: ① 可变性:象日期和时间这样的类对象应该是不可变的.Calendar类中可以使用三种方法更改日历字段:set().add() 和 roll(). ② 偏移性:Date中的年份是从1900开始的,而月份都是从0开始的. ③格式化:格式化只对Date有用,Calendar则不行. ④此外,它们也不是线程安全的

java中将RFC1123日期时间格式化

JDK8新的日期时间类转换方法: package com.example; import org.junit.Test; import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; public class TestRFC1123 { String rfc1123Times[] = new String[]

C# 日期时间格式化

格式模式(设日期2016-10-19 15:53:29) d 月中的某一天.一位数的日期没有前导零. dd 月中的某一天.一位数的日期有一个前导零. ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义.(周三) dddd 周中某天的完整名称,在 DayNames 中定义.(星期三) M 月份数字.一位数的月份没有前导零. MM 月份数字.一位数的月份有一个前导零. MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义.(10月) MMMM 月