转自:http://hi.baidu.com/huahua035/item/b5a53b6e3a4ae1106895e6a6


// 12小时制
  SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm");
  // 24
小时制
  SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");

使用SimpleDateFormat 时,小时如果是小写的“hh”为12小时制,如果是大写的“HH”为24小时制;

c.get(Calendar.HOUR);   // 12小时制
c.get(Calendar.HOUR_OF_DAY); // 24
小时制

 

示例:

 

 
   
  1. public class Test { 
  2.     public static void main(String[] args) throws ParseException { 
  3.         String time = "2011-05-12 12:02"
  4.         // 12小时制 
  5.         SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm"); 
  6.         // 24小时制 
  7.         SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 
  8.         Date d1 = sdf1.parse(time); 
  9.         Date d2 = sdf2.parse(time); 
  10.         System.out.println(d1.toString()); 
  11.         System.out.println(d2.toString()); 
  12.         // 重新format却是正确的 
  13.         System.out.println(sdf1.format(d1).toString()); 
  14.         System.out.println(sdf2.format(d2).toString()); 
  15.  
  16.         Calendar c = Calendar.getInstance(); 
  17.         c.setTime(new Date()); 
  18.         System.out.println(c.get(Calendar.HOUR)); 
  19.         System.out.println(c.getTime().toString()); 
  20.         System.out.println(c.get(Calendar.HOUR_OF_DAY)); 
  21.         System.out.println(c.getTime().toString()); 
  22.     } 

输出结果:

 
   
  1. Thu May 12 00:02:00 CST 2011 
  2. Thu May 12 12:02:00 CST 2011 
  3. 2011-05-12 12:02 
  4. 2011-05-12 12:02 
  5. Fri Dec 07 13:00:22 CST 2012 
  6. 13 
  7. Fri Dec 07 13:00:22 CST 2012 

我碰到的问题终于解决了:每到下午,设定的时间会+12小时,这样设置的报警时间就成了明天的时间了。问题在这里:

c.get(Calendar.HOUR);   // 12小时制

c.get(Calendar.HOUR_OF_DAY); // 24小时制