看看这种日期时间型字符串比较时的怪现象?(内有具体程序) SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");注意把hh改成HH。h代表12小时制的,把12点当成0点来处理了。H才是24小时制的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改成HH就对了,不过如果SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");表示12小时制,那么SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");是表示AM/PM的12小时制么?我看帮助文档是这么写的,为什么我这么写它会报ParsteException的错误?import java.text.*;import java.util.*;public class test{ public static void main(String args[]){ SimpleDateFormat bartDateFormat = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss a"); String dt = "2004-03-01 11:30:20 PM"; String dt2 = "2004-03-01 09:30:20 AM"; Date now = new Date(); try { Date date1 = bartDateFormat.parse(dt); Date date2 = bartDateFormat.parse(dt2); if (date1.compareTo(date2)>0){ System.out.println (date1.getTime()-date2.getTime()); } else{ System.out.println ("false"); } } catch (Exception ex) { System.out.println (ex); } }} String dt = "2004-03-01 11:30:20 下午";String dt2 = "2004-03-01 09:30:20 上午";或者SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US); dt的值是标准的AM/PM格式,如果设SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US);为什么当dt = "2004-03-02 13:20:20 AM";时Date date1 = bartDateFormat.parse(dt);系统没有报错?应该是格式不对的啊 因为你的系统默认标准是简体中文,你没看清“或者”,也就是要么bartDateFormat不变,设置dt为"2004-03-01 11:30:20 下午",要么dt不变,把bartDateFormat设置为new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US) 我明白你的意思,我是保持dt不变设置SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US);但是dt = "2004-03-02 13:20:20 AM";时Date date1 = bartDateFormat.parse(dt);应该报PasteException的错误啊,因为13:20:20 AM并不符合AM/PM的12小时制 SimpleDateFormat.parse把"2004-03-02 13:20:20 AM"处理为:“2004-03-01 01:30:20 PM” 这样啊,那如果想检查dt = "2004-03-02 13:20:20 AM";的格式,该怎么办呢?请指教 楼主好耐心,bartDateFormat.setLenient(false); vector问题 public class Server implements Comparable<Server>{}中<Server>是什么意思? 我在书上看到这个程序,我有点不懂。请你们指导一下,谢谢! 帮我看下,为什么是这样 我是菜鸟,向各位大侠请教个关于java中关于输入输出流的问题 你用过这样的修饰吗? 初学者的困惑 开发手机程序需要那些硬件软件? 怎样将short转换为两个byte输出?并可以被还原为short? 商标局很有意思的一个反爬技术 求一简单特殊字符识别显示程序:在线等 java读写存档的问题
import java.text.*;
import java.util.*;public class test{
public static void main(String args[]){
SimpleDateFormat bartDateFormat = new SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss a");
String dt = "2004-03-01 11:30:20 PM";
String dt2 = "2004-03-01 09:30:20 AM";
Date now = new Date();
try {
Date date1 = bartDateFormat.parse(dt);
Date date2 = bartDateFormat.parse(dt2);
if (date1.compareTo(date2)>0){
System.out.println (date1.getTime()-date2.getTime());
}
else{
System.out.println ("false"); }
}
catch (Exception ex) { System.out.println (ex); }
}
}
String dt2 = "2004-03-01 09:30:20 上午";
或者
SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US);
如果设SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US);
为什么当dt = "2004-03-02 13:20:20 AM";时Date date1 = bartDateFormat.parse(dt);
系统没有报错?应该是格式不对的啊
你没看清“或者”,
也就是要么bartDateFormat不变,设置dt为"2004-03-01 11:30:20 下午",
要么dt不变,把bartDateFormat设置为new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a",Locale.US)
但是dt = "2004-03-02 13:20:20 AM";时Date date1 = bartDateFormat.parse(dt);
应该报PasteException的错误啊,因为13:20:20 AM并不符合AM/PM的12小时制
“2004-03-01 01:30:20 PM”
请指教
bartDateFormat.setLenient(false);