SimpleDateFormatの日付の書式設定、およびSimpleDateFormat.parse


  1. 日付と時刻の識別子:  
  2. YYYY:年  
  3. MM:月  
  4. DD:日   
  5. HH:1〜12時間(1-12) 
  1. HH:24時間(0-23)  
  2. MM:分  
  3. SS:秒   
  4. S:MS   
  5. E:曜日  
  6. 年の最初の日:D  
  7. F:月の最初の数週間(日数今月は分割7の上に合計されます)  
  8. W:年の最初の数週間  
  9. W:月の最初の数週間(実際の状況に応じてカウントされます)  
  10. :アイデンティティの午後  
  11. K:HHとほぼ1日24時間を表す(1-24)。  
  12. K:とHH <スパンのスタイル= "フォントファミリー:ゴシック、ヘルベチカ、サンセリフ;">ほとんど</ span>の<スパンのスタイル= "フォントファミリー:ゴシック、ヘルベチカ、サンセリフ;">、1日を示しています12時間(0-11)。</スパン>  
  13. Z:タイムゾーン  

場合これには、日付の後にフォーマットされます混乱ああああに注意を払います!

yyyyyyyyyyy:同時になど、複数の手紙を書いていません。あなたのサイズの数によると、先行ゼロ、筆記文字の長さに依存。

例えば:あなたは、2013年8月13日15時29分44秒でにフォーマット2013--08--13 15時29分44秒この時間にしたいです

誤った日付の書式設定のミスの場合には、時間識別子を。

[javaの]   ビュー無地 コピー
  1. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时MM分ss秒");  
  2. 写成这样了。最后得到的结果就不对了。  
[java]  view plain copy
  1. 20130814日 150859秒  
[java]  view plain copy
  1. 这个MM这里写的是月份的表示。而分钟的表示则是mm。所以要注意、  

下面是把日期格式话成最全的例子。

[java]  view plain copy
  1. SimpleDateFormat sdf = new SimpleDateFormat("yyyyyyyy-MM-dd HH(hh):mm:ss S E D F w W a k K z");  
  2.         long times = System.currentTimeMillis();  
  3.         System.out.println(times);  
  4.         Date date = new Date(times);  
  5.         String tim = sdf.format(date);  
  6.         System.out.println(tim);  

输出的结果:

[html]  view plain copy
  1. 00002013-08-14 15(03):56:40 742 星期三 226 2 33 3 下午 15 3 CST  


[java]  view plain copy
  1. SimpleDateFormat sdf = new SimpleDateFormat("现在是yyyy年MM月dd日 HH(hh)时   mm分 ss秒 S毫秒   星期E 今年的第D天  这个月的第F星期   今年的第w个星期   这个月的第W个星期  今天的a k1~24制时间 K0-11小时制时间 z时区");  
  2.         long times = System.currentTimeMillis();  
  3.         System.out.println(times);  
  4.         Date date = new Date(times);  
  5.         String tim = sdf.format(date);  
  6.         System.out.println(tim);  

输出结果:

[html]  view plain copy
  1. 现在是2013年08月14日 16(04)时   03分 03秒 812毫秒   星期星期三 今年的第226天  这个月的第2星期   今年的第33个星期   这个月的第3个星期  今天的下午 161~24制时间 40-11小时制时间 CST时区  

标识符表格:

Symbol Meaning Presentation Example
G era designator Text AD
y year Number 2009
M month in year Text & Number July & 07
d day in month Number 10
h hour in am/pm (1-12) Number 12
H hour in day (0-23) Number 0
m minute in hour Number 30
s second in minute Number 55
S millisecond Number 978
E day in week Text Tuesday
D day in year Number 189
F day of week in month Number 2 (2nd Wed in July)
w week in year Number 27
W week in month Number 2
a am/pm marker Text PM
k hour in day (1-24) Number 24
K hour in am/pm (0-11) Number 0
z time zone Text Pacific Standard Time
' escape for text Delimiter (none)
' single quote Literal '


simpledateformat的parse默认是弱校验的.

比如说如果你的format为"yyyy-MM-dd" ,输入的字串如果是"2013-08-28"能转化正常.

输入的如果是"2013-13-28"则会生成Date:2014-01-28.也就是顺加.

如果希望把"2013-13-28"当做错误格式.则可以设定setLenient(false);

建议加上 以防出错

代码如下

public class DateTest {  
    public static void main(String[] args) throws ParseException {  
        DateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
        format.setLenient(false);  
        Date date = format.parse("33/12/2011");  
        System.out.println(date);  
    }  
} 

输出结果为:

Exception in thread "main" java.text.ParseException: Unparseable date: "33/12/2011" 
at java.text.DateFormat.parse(Unknown Source) 
at DateTest.main(DateTest.java:11)

若设置

format.setLenient(false);

则输出结果为

2012年1月2日夜12時〇 〇分00秒CST月 
偽、正確な分析場合setLenientは、カレンダー寛大が文字列を解析するかどうかを設定するために使用される、デフォルトはtrue、緩やかな解像度です。


公開された19元の記事 ウォンの賞賛8 ビュー4143

おすすめ

転載: blog.csdn.net/paohui001lqp/article/details/80139111