YJava中随心所欲格式化时间(快刀斩乱麻)

最近在南航电子商务公司做feinar的项目的后期功能中的PNR(Pessenger Name Record)的解析,由于要使用中航信的IBE开发包,里面的日期形式千奇百怪的,几乎你想的到的格式都有,很是恼火,最后,经过查找资料,翻阅文档,以及跟项目团队的同事们讨论,总结了java中各种日期的格式化的方法。

经过实践中的对比,我们选择了SimpleDateFormat这个类来解决我们的时间格式问题。

SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式.

日期和时间模式

日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A''Z''a''z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" 表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在分析时与输入字符串进行匹配。

定义了以下模式字母(所有其他字符 'A''Z''a''z' 都被保留):

字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

以下示例显示了如何在美国语言环境中解释日期和时间模式。给定的日期和时间为美国太平洋时区的本地时间 2001-07-04 12:08:56

日期和时间模式 结果
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700

SimpleDateFormat 在编程中的实际应用实例:

(一)格式化(日期 -> 文本)

一般地,中文中常用的  日期 时间如:20070719 20:29:30
SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd hh:mm:ss");
  System.out.println("Date to String "+formater.format(new Date()));

相近的常用形式还有 yyMMdd hh:mm:ss  yyyy-MM-dd hh:mm:ss  dd-MM-yyyy hh:mm:ss
但是值得注意是:这种格式(19JUL07 )及其相近的形式,就有点小技巧  19JUL07
SimpleDateFormat formater = new SimpleDateFormat("ddMMMyy",,new Locale("US"))
System.out.println("Date to String "+formater.format(new Date()).toUpperCase());
由于是英文的所以应该使用 Locale 对象参数,否则就使用的是默认本地 Locale 。

(二)分析(文本 -> 日期)

一般地,想要什么要的格式的时间就就使用什么形式的日期时间模式和文本参数,例如 2007-7-19 则返回一个java.util.Date型的时间对象,时分秒都补0

 formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
  try ...{
   System.out.println("String to Date "+formater.parse("2007sep01"));
  } catch (ParseException e) ...{
   e.printStackTrace();
  }

特别地,

 formater = new SimpleDateFormat("yyyyMMMdd",new Locale("US"));
  try ...{
   System.out.println("String to Date "+formater.parse("2007sep01"));
  } catch (ParseException e) ...{
   e.printStackTrace();
  }

它也返回一个java.util.Date型的日期对象,时分秒都补0

(三)文本 - > Timestamp  、日期 -> Timestamp

Timestamp t ;
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  try ...{
   t = new Timestamp(format.parse("2007-07-19 00:00:00").getTime());
  } catch (ParseException e) ...{
   e.printStackTrace();
  }

 Timestamp t ;
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  t = new Timestamp(new Date().getTime());

Java中随心所欲格式化时间(快刀斩乱麻)相关推荐

  1. java simpledateformat星期_Java中随心所欲格式化时间 SimpleDateFormat

    SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类.它允许进行格式化(日期 -> 文本).分析(文本 -> 日期)和规范化.SimpleDateFor ...

  2. Java中得到GMT 时间(格林时间)

    GMT 时间(格林时间) 即中央时区时间,北京时间是在东八区,所以北京时间= 格林时间+8小时. java中得到GMT时间的大代码片段如下: Calendar cd = Calendar.getIns ...

  3. Java中获取当前时间

    Java中获取当前时间 1)获取当前时间.返回类型为long类型,这个值其实是距离 1970-01-01 00:00:00 相差的毫秒数 import java.util.Date;public cl ...

  4. Java中数字格式化

    在解决实际问题时,对数字的处理是非常普遍的,如数学问题.随机问题.商业货币问题.科学计数问题等.为了应对以上问题,Java提供了处理相关问题的类,包括DecimalFormat类(用于格式化数字).M ...

  5. java 验证时间格式 效率_有关Java中日期格式化的效率实录

    java中格式化日期为固定格式的字符串,无外乎有两种方法:DateFormat 和String.format(JDK1.5+) 但是哪个方法效率更高呢?本人做了一个实验,发现了一个很有趣的现象. 当系 ...

  6. java中取系统时间_JAVA中获取当前系统时间(示例代码)

    一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowStrin ...

  7. 在java中获取当前时间_JAVA中获取当前系统时间

    一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowStri ...

  8. Java中日期格式化字符串大小写区别YYYY和yyyy

    Java里面: HH代表24小时制的: hh代表12小时制: MM代表月: mm代表分: DD代表 day of year  今年的第N天,dd是这个月的多少天: yyyy代表year, YYYY代表 ...

  9. formatter java_Java笔记 - Java中的格式化输出,Formatter类的介绍

    本文主要内容 1.System.out.format()格式化方法的介绍(): 2.Formatter类的介绍和使用:初始化需要传入用于输出的介质,如System.out: 3.格式化说明符:form ...

最新文章

  1. 国内42所一流大学综合排名出炉!清北之后谁是国内第三?
  2. href 带参数 打开exe_js调用exe文件 兼容所有浏览器
  3. Java - Java集合中的快速失败Fail Fast 机制
  4. Android 通过Uri获取Bitmap对象
  5. 创造开放世界——《看火人》游戏场景设计
  6. Linq查询datatable的记录集合
  7. cad图层管理插件_设计大神CAD常用七个插件你会用几个?
  8. 数据集蒸馏 by Matching Training Trajectories
  9. ListView 和 GridView应用详解-----本文转自博客园
  10. 使用HTML和CSS格式化DBMail
  11. python必备入门代码-20行python代码的入门级小游戏的详解
  12. fiddler注释_FIDDLER的使用方法及技巧总结
  13. vscode开发python使用教程_VSCode 支持Python
  14. 如何查html病毒svchost.exe,网站快照劫持又一例:svchost.exe病毒快照劫持的解决办法...
  15. Wordpress中wp-admim管理后台(404)无法进入,无限循环跳出解决方法
  16. Lrc文件与音乐的同步显示
  17. 论文笔记 | 用户画像
  18. MySQL有哪些“饮鸩止渴”提高性能的方法?
  19. 穹顶之下——大数据下生活
  20. 乐乎常用的html源码,点点网关闭自定义html模板代码功能,网易lofter重新映入眼帘...

热门文章

  1. Windows 下 Texlive 2018 + sublime3 配置 LaTex 环境 (详细版)
  2. 助航灯光监控系统服务器,机场助航灯光计算机监控系统的设计与实现
  3. 图文详解维感科技3D深度相机在AGV/AMR的应用(一)
  4. Python与shell引号引起的问题
  5. OKR 3355,对话让OKR一路生花 #OKR三书
  6. css中文字闪烁这么实现,css3实现文字闪烁,改变透明度
  7. RK3568 Buildroot-2021.11 > Target packages > Graphic libraries and applications (graphic/text)包解释
  8. 百亿级实时查询优化实战,让你的Elasticsearch飞起来
  9. 《Java程序设计》第二次实验报告
  10. 无限小数的形成原因是什么,为什么会有无限小数?