【问题标题】:Joda-Time, How to pick up format for string parsing?Joda-Time,如何选择字符串解析的格式?
【发布时间】:2014-08-18 13:55:54
【问题描述】:

以下代码使用Joda-Time

Long timestamp = DateTime.parse(dateInString,DateTimeFormat.shortTime()).getMillis();

生成:

java.lang.IllegalArgumentException: Invalid format: "12.05.2014 11:42:35.808" is malformed at ".05.2014 11:42:35.808"

我尝试了所有DateTimeFormat.*,但每种格式都会产生错误。

如何解决?

【问题讨论】:

  • 12.05.2014 是 dd.MM.yyyy 格式或 MM.dd.yyyy 格式
  • 我尝试了不同的变体。您能否提供“12.05.2014 11:42:35.808”的工作代码?

标签: java parsing date time jodatime


【解决方案1】:
import java.util.*;
import java.text.*;

Date DateNow= new Date( );  
SimpleDateFormat sdf =new SimpleDateFormat ("yyyy.MM.dd hh:mm:ss");
String timestamp= sdf.format(DateNow);

【讨论】:

【解决方案2】:

试试这个

   DateTimeFormatter pattern = DateTimeFormat.forPattern("dd.MM.yyy hh:mm:ss.SSS");
   Long timestamp = DateTime.parse(dateInString,pattern).getMillis();

【讨论】:

  • 如何用这种模式来表示下午的时间?
【解决方案3】:

构建一个与您的模式匹配的DateTimeFormatter,然后使用它。你的模式当然不是“短时间”模式,因为你也有一个日期......

例如:

// Possibly MM.dd.yyyy - we don't know what 12.05.2014 is meant to represent
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd.MM.yyyy HH:mm:ss.SSS");
                                            .withLocale(Locale.US)
                                            .withZoneUTC(); // Adjust accordingly
DateTime dateTime = formatter.parse(text);
long millis = dateTime.getMillis();

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-08-17
  • 2023-04-09
  • 1970-01-01
  • 2011-03-19
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
相关资源
最近更新 更多