- 日付と時刻の識別子:
- YYYY:年
- MM:月
- DD:日
- HH:1〜12時間(1-12)
- HH:24時間(0-23)
- MM:分
- SS:秒
- S:MS
- E:曜日
- 年の最初の日:D
- F:月の最初の数週間(日数今月は分割7の上に合計されます)
- W:年の最初の数週間
- W:月の最初の数週間(実際の状況に応じてカウントされます)
- :アイデンティティの午後
- K:HHとほぼ1日24時間を表す(1-24)。
- K:とHH <スパンのスタイル= "フォントファミリー:ゴシック、ヘルベチカ、サンセリフ;">ほとんど</ span>の<スパンのスタイル= "フォントファミリー:ゴシック、ヘルベチカ、サンセリフ;">、1日を示しています12時間(0-11)。</スパン>
- Z:タイムゾーン
場合これには、日付の後にフォーマットされます混乱ああああに注意を払います!!!
yyyyyyyyyyy:同時になど、複数の手紙を書いていません。あなたのサイズの数によると、先行ゼロ、筆記文字の長さに依存。
例えば:あなたは、2013年8月13日15時29分44秒でにフォーマット2013--08--13 15時29分44秒この時間にしたいです
誤った日付の書式設定のミスの場合には、時間識別子を。
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时MM分ss秒");
- 写成这样了。最后得到的结果就不对了。
- 2013年08月14日 15时08分59秒
- 这个MM这里写的是月份的表示。而分钟的表示则是mm。所以要注意、
下面是把日期格式话成最全的例子。
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyyyyy-MM-dd HH(hh):mm:ss S E D F w W a k K z");
- long times = System.currentTimeMillis();
- System.out.println(times);
- Date date = new Date(times);
- String tim = sdf.format(date);
- System.out.println(tim);
输出的结果:
- 00002013-08-14 15(03):56:40 742 星期三 226 2 33 3 下午 15 3 CST
- SimpleDateFormat sdf = new SimpleDateFormat("现在是yyyy年MM月dd日 HH(hh)时 mm分 ss秒 S毫秒 星期E 今年的第D天 这个月的第F星期 今年的第w个星期 这个月的第W个星期 今天的a k1~24制时间 K0-11小时制时间 z时区");
- long times = System.currentTimeMillis();
- System.out.println(times);
- Date date = new Date(times);
- String tim = sdf.format(date);
- System.out.println(tim);
输出结果:
- 现在是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、緩やかな解像度です。