我想格式化的字符串如下所示:String datetime ="9/1/10 11:34:35 AM"
以下SimpleDateFormat模式的工作原理:
SimpleDateFormat sdf = SimpleDateFormat("M/d/yy h:mm:ss");
Date d = sdf.parse(datetime);
System.out.println(d);
Output> [Wed Sep 01 11:34:35 CEST 2010]
Run Code Online (Sandbox Code Playgroud)
但是我也需要解析AM/PM标记,当我将其添加到模式时,我收到一个异常.
无效的模式:
SimpleDateFormat sdf = SimpleDateFormat("M/d/yy h:mm:ss a");
Run Code Online (Sandbox Code Playgroud)
我也试过这个也有同样的例外:
SimpleDateFormat sdf = SimpleDateFormat("M/d/yy h:mm:ss aa");
Run Code Online (Sandbox Code Playgroud)
例外:
java.text.ParseException: Unparseable date: "9/1/10 11:34:35 AM"
Run Code Online (Sandbox Code Playgroud)
我查看了http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html#text上的API,但似乎无法找到我做错的地方.
有什么建议?
我试图以分钟计算两个日期对象之间的持续时间.
我在研究期间从这个 stackoverflow问题中找到了一些灵感.通常这似乎是正确的,但我正在经历一个测试用例的有趣行为.
当我运行下面附带的源代码(你可以简单地复制它)时,它返回66分钟而不是(正确的结果)6我目前不明白为什么.也许我现在正在监督一些事情,你能告诉我它是什么吗?
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Test {
private SimpleDateFormat parserSDF = new SimpleDateFormat("MM/dd/yy HH:mm",
Locale.ENGLISH);
public static void main(String[] args) {
Test test = new Test();
Date begin = test.createDateFromString("10/25/09 1:54");
Date end = test.createDateFromString("10/25/09 2:00");
int duration = test.minutesDiff(begin, end);
//result is 66
System.out.println(duration);
}
public int minutesDiff(Date earlierDate, Date laterDate) {
if (earlierDate == null || laterDate == null)
return 0;
return (int) ((laterDate.getTime() / 60000) - (earlierDate.getTime() …Run Code Online (Sandbox Code Playgroud)