java中跨时区的日期格式转换
2019獨角獸企業重金招聘Python工程師標準>>>
先上一段代碼
public?class?DataTransfer {public?static?void?main(String[]?args)?{String?dateStr?=?"Sep?30,?2014?12:00:00?AM";SimpleDateFormat?sdf?=?new?SimpleDateFormat();sdf.applyPattern("MMM?dd,?yyyy?HH:mm:ss?a");try?{Date?parse?=?sdf.parse(dateStr);sdf.applyPattern("yyyy-MM-dd");System.out.println(sdf.format(parse));}?catch?(ParseException?e)?{e.printStackTrace();}} }運行時會觸發解析異常,英文按地區裝換,漢語言環境無法解析英文字符
java.text.ParseException:?Unparseable?date:?"Sep?30,?2014?12:00:00?AM"at?java.text.DateFormat.parse(Unknown?Source)at?com.tester.date.DataTransfer.main(DataTransfer.java:21)這是由于本人的筆記本是中文環境,所以導致英文無法解析,如果把dateStr改成下面的
String?dateStr?=?"九月?30,?2014?14:55:52?下午";這種可以完全執行,遇到這種問題該如何處理呢。
---------------------------------------------------------------------------------------------------------------------
首先來說問題肯定發生在
SimpleDateFormat對象上,那怎么做才能讓第一次的字符串日期正常解析呢,大拿在SimpleDateFormat的父類上
SimpleDateFormat?sdf?=?(SimpleDateFormat)?SimpleDateFormat.getDateInstance(0,?Locale.ENGLISH);通過設置地區來設置,第一個參數是時間顯示風格,默認是0,再次不再深究,日常開發幾乎沒用到過。
然后解析
String?dateStr?=?"Sep?30,?2014?12:00:00?AM";完全正確,異常完全消失,同樣中文的可切換到中文狀態下。
注意:在這里提醒一下,格式化字符換(如"MMM dd, yyyy HH:mm:ss a")從哪兒得到,很簡單,看SimpleDateFormat源碼或者java開發文檔。
時間的加法和減法問題,相信大多數人做時間加減法都會去使用Calendar對象,而不是使用SimpleDateFomat+Date,這里給大家演示一下這種方法,至于你用或者不用,那就不是我要關心的事了。
private?void?setOffestDate(int?ndays){Date?date?=?new?Date(System.currentTimeMillis());SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");System.out.println(sdf.format(date));date.setTime(System.currentTimeMillis()+1000*3600*24*ndays);System.out.println(sdf.format(date)); }ndays=0表示當天
ndyas為正數時表示時間向前
ndays為負數的售后表示時間后退
轉載于:https://my.oschina.net/ososchina/blog/337288
總結
以上是生活随笔為你收集整理的java中跨时区的日期格式转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教程:在 VM Depot 中查找 Az
- 下一篇: 什么是SAS