我有以下情况:
要计划在特定日期开始并在第二天结束的活动,将提供超过24小时约束的结束日期/时间值。
例如:start-date = 2013-01-01 23:22:00 and end-date = 2013-01-01 26:22:00
我认为解决方案是使用JodaTime提供的宽松方法。但它表现得不像我预期的那样。所以我提供了一些测试代码,解释了我的困惑:
public static void main(String[] args){
String lenientDate = "2013-01-01 26:22:00";
String format = "YYYY-MM-DD hh:mm:ss";
try{
System.out.println("Lenient Date:" + lenientDate);
DateFormat sdf = new SimpleDateFormat(format);
sdf.setLenient(true);
System.out.println("Java.Date output:" + sdf.parse(lenientDate));
DateTime dt = new DateTime(sdf.parse(lenientDate));
System.out.println("hybrid calls:" + dt.toString());
DateTimeFormatter parseFormat = DateTimeFormat.forPattern(format);
Chronology lenient = LenientChronology.getInstance(GregorianChronology.getInstance());
parseFormat = parseFormat.withChronology(lenient);
DateTime dateTime = parseFormat.parseDateTime(lenientDate);
System.out.println("All Joda calls:" + dateTime.toString());
System.out.println("My expected values: " + dateTime.minusHours(12).toString());
}catch(Exception e){
System.out.println("Something went wrong!");
}
}
结果是:
Lenient Date:2013-01-01 26:22:00
Java.Date output:Mon Dec 31 02:22:00 CET 2012
hybrid calls:2012-12-31T02:22:00.000+01:00
All Joda calls:2013-01-02T14:22:00.000+01:00
My expected values: 2013-01-02T02:22:00.000+01:00
图书馆:Joda 2.2; Java:JDK 1.7;平台:Mac OSX
有人可以在日期/时间转换中解释宽恕的正确行为吗?
答案 0 :(得分:0)
"hh:mm:ss"
处的日期格式无效。日期格式应为:
String format = "yyyy-MM-dd HH:mm:ss";
半小时(1~12)的时钟 H - 小时(0~23)
使用此日期模式,所有示例都按预期工作