日期:2014-05-17  浏览次数:20823 次

Calendar 的 set() 下午时间相差十二小时
做一个定时器;但是下午时间为第二天的,代码如下:
public class test {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
System.out.println("现在时间:"+cal.getTime());
String time="13:00:00";//预定时间:
String[] str = time.split(":");
if(str.length>0){
cal.set(Calendar.HOUR, Integer.parseInt(str[0]));
}
if(str.length>1){
cal.set(Calendar.MINUTE, Integer.parseInt(str[1]));
}
if(str.length>2){
cal.set(Calendar.SECOND, Integer.parseInt(str[2]));
}
System.out.println("预定时间:"+cal.getTime());
}

--------------------------
结果:
现在时间:Sat Apr 12 14:08:06 CST 2014
预定时间:Sun Apr 13 01:00:00 CST 2014

结果:
------解决方案--------------------
public class test
{
public static void main(String[] args)
{
Calendar cal = Calendar.getInstance();
System.out.println("现在时间:" + cal.getTime());
String time = "01:00:00";// 预定时间:
String[] str = time.split(":");
if (str.length > 0)
{
cal.set(Calendar.HOUR, Integer.parseInt(str[0]));
}
if (str.length > 1)
{
cal.set(Calendar.MINUTE, Integer.parseInt(str[1]));
}
if (str.length > 2)
{
cal.set(Calendar.SECOND, Integer.parseInt(str[2]));
}
System.out.println("预定时间:" + cal.getTime());
}
}

把13点改为1点,看一下源代码吧,源代码中说的很清楚,HOUR用于12小时制,中午和午夜用 0 表示,不用 12 表示;