java随心所欲格式化时间

2023-04-12


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());

本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。

免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com