// 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小时制
示例:
public class Test {
public static void main(String[] args) throws ParseException {
String time="2011-05-12 12:02";
// 12小时制
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm");
// 24小时制
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date d1 = sdf1.parse(time);
Date d2 = sdf2.parse(time);
System.out.println(d1.toString());
// 重新format却是正确的
System.out.println(sdf1.format(d1).toString());
System.out.println(d2.toString());
Calendar c=Calendar.getInstance();
c.setTime(new Date());
c.get(Calendar.HOUR);
System.out.println(c.getTime().toString());
c.get(Calendar.HOUR_OF_DAY);
System.out.println(c.getTime().toString());
}
}
参考:http://blog.csdn.net/shibenjie/archive/2009/06/12/4263912.aspx
我碰到的问题终于解决了:每到下午,设定的时间会+12小时,这样设置的报警时间就成了明天的时间了。问题在这里:c.get(Calendar.HOUR); // 12小时制
c.get(Calendar.HOUR_OF_DAY);
// 24小时制