Java Calendar.HOUR_OF_DAY 下午 2 点不工作
Java Calendar.HOUR_OF_DAY not working for 2.00 PM
我需要在当前时间上加上两个小时并以 24 小时格式表示。
这是我的代码
public class Tester {
@Test
public void test() {
//for example i have entered time 12.00PM so it should add 2 hours and print 14.00
System.out.println(stringToDate("2015-10-16 12:00:03"));
}
public static Date stringToDate(String str) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = null;
try {
date = formatter.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY)+2);
date = calendar.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
}
预期输出
Fri Oct 16 14:00:03 IST 2015
但是我得到了Fri Oct 16 02:00:03 IST 2015
如果我使用时间 "2015-10-16 11:00:03"
而不是 "2015-10-16 12:00:03"
然后我得到正确的输出那是
"2015-10-16 13:00:03"
谁能帮我解决这个问题
您的方法应该如下所示
public static Date stringToDate(String str) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = formatter.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, 2);
date = calendar.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
将小时格式更改为 24 小时制 (HH) 而不是 (hh),函数 Calendar.add 将日历时间增加 2 小时
public static Date stringToDate(String str) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = formatter.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, 2);
date = calendar.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
这是错误的:
calendar.add(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + 2);
在这种情况下,您将当前小时加上 2 小时到当前小时。你应该使用:
calendar.add(Calendar.HOUR_OF_DAY, 2);
对于 24 小时格式:使用 HH
而不是 hh
。
我需要在当前时间上加上两个小时并以 24 小时格式表示。 这是我的代码
public class Tester {
@Test
public void test() {
//for example i have entered time 12.00PM so it should add 2 hours and print 14.00
System.out.println(stringToDate("2015-10-16 12:00:03"));
}
public static Date stringToDate(String str) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = null;
try {
date = formatter.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY)+2);
date = calendar.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
}
预期输出
Fri Oct 16 14:00:03 IST 2015
但是我得到了Fri Oct 16 02:00:03 IST 2015
如果我使用时间 "2015-10-16 11:00:03"
而不是 "2015-10-16 12:00:03"
然后我得到正确的输出那是
"2015-10-16 13:00:03"
谁能帮我解决这个问题
您的方法应该如下所示
public static Date stringToDate(String str) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = formatter.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, 2);
date = calendar.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
将小时格式更改为 24 小时制 (HH) 而不是 (hh),函数 Calendar.add 将日历时间增加 2 小时
public static Date stringToDate(String str) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = formatter.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, 2);
date = calendar.getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
这是错误的:
calendar.add(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + 2);
在这种情况下,您将当前小时加上 2 小时到当前小时。你应该使用:
calendar.add(Calendar.HOUR_OF_DAY, 2);
对于 24 小时格式:使用 HH
而不是 hh
。