Osc*_*Ryz 11 java datetime simpledateformat
为什么解析'23:00 PM'并SimpleDateFormat("hh:mm aa")返回上午11点?
Jac*_*eow 22
您应该获得异常,因为"23:00 PM"不是有效的字符串,但在处理日期解析时,Java的日期/时间工具默认是宽松的.
逻辑是23:00 PM是在晚上11:00之后的12小时,即第二天的11:00 AM.你还会看到像"4月31日"这样的东西被解析为"5月1日"(4月30日之后的一天).
如果您不想要这种行为,请使用DateFormat #setLenient(boolean)在SimpleDateFormat 上将lenient属性设置为false ,并且在传递无效的日期/时间时会出现异常.
Ste*_*eod 17
如果要解析24小时制,你想要"HH:mm aa"作为你的格式.
public static void main(String[] args) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat("HH:mm aa");
final Date date = df.parse("23:00 PM");
System.out.println("date = " + df.format(date));
}
Run Code Online (Sandbox Code Playgroud)
输出
date = 23:00 PM
Run Code Online (Sandbox Code Playgroud)
以下是javadoc中指定的格式选项
H Hour in day (0-23)
k Hour in day (1-24)
K Hour in am/pm (0-11)
h Hour in am/pm (1-12)
Run Code Online (Sandbox Code Playgroud)
请注意,“h”代表 1-12 小时。如果您想处理 1-24,请尝试“k”。0-23 尝试“H”。但如果您输入不可能的数据,我不会期望得到有效的结果。
| 归档时间: |
|
| 查看次数: |
33975 次 |
| 最近记录: |