当前位置: 首页 > 知识库问答 >
问题:

Joda时间:无效格式

郦楷
2023-03-14

我正在使用Joda API格式化当前时间(结果必须是一个格式为“yyyy-mm-dd hh:mm:ss”的字符串)。下面我提供了我的代码和错误消息:

DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dt = new DateTime();
String datetime = dtf.parseDateTime(dt.toString()).toString();

错误消息:

线程“AWT-EventQueue-0”java.lang.IllegalArgumentException中出现异常:格式无效:org.joda.time.format.DateTimeFormatter.ParsedateTime(DateTimeFormatter.java:899)的“T11:47:29.229+01:00”在“T11:47:29.229+01:00”处格式不正确

共有2个答案

史飞尘
2023-03-14

默认的DateTime字符串表示形式需要不同的模式:

   DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'+01:00'");

如果要用模式格式化日期,则需要使用print()方法

   DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
   DateTime dt = new DateTime();
   String datetime = dtf.print(dt);
竺捷
2023-03-14

如果要使用自定义格式转换为字符串,请执行

DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
DateTime dt = new DateTime();
String datetime = dtf.print(dt);

您当前在最后一行中所做的是

String defaultFormatted = dt.toString();
// this is what contains the "T11:47:29.229+01:00" part

DateTime dateTime = dtf.parseDateTime(defaultFormatted);
// we're back at the beginning, this is equivalent to your original "dt"

String defaultFormattedAgain = dateTime.toString();
// and this is the same as the initial string with T11:..

因此,您将多次转换为&from string,但从未使用dtf实际格式化字符串的外观。

 类似资料:
  • 我正在尝试使用Joda在一个简单的Java程序中获取UTC时间戳: 程序输出如下: 毫秒值是正确的UTC时间(即用时区确认)第二个值是时区。 我需要的是UTC值不变为(即独立于TZ),用于数据库写入。这可能吗? 我知道是本地日期(GMT-4),是UTC(GMT-0)。日期的输出值如下: 我尝试了所有组合,试图将的UTC值作为java.sql.TimeStamp: 用于测试的打印输出: 第一行是正确

  • 问题内容: 他们幸福地结婚了吗? 我正在使用最新版本的hibernate(4)和1.3版的joda-time hibernate支持,我也相信这是当前的最新版本。 使用批注时,一切似乎都正常(按预期方式创建了日期列): 一起使用这些版本是否存在任何已知问题? Update Well证明已创建列,但无法填充任何数据: 处理程序处理失败; 嵌套的异常是java.lang.AbstractMethodE

  • 问题内容: Joda-time具有一个Interval类,该类介于DateTime之间。什么可以用于一系列LocalDate? 我想要一个表示例如“从2011年1月1日到2011年10月1日”的对象,而没有时间(或时区)进入画面。 据我所知,joda-time没有内置任何功能。如果不存在任何东西,而我们会创建它,它应该是什么样?最重要的是,它可以实现joda- time的哪些接口以最好地集成到其他

  • 问题内容: 我想向Access插入一个datetime值,但是出现此错误: net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc ::: 3.0.4数据异常:无效的日期时间格式 这是代码: 问题答案: 错误消息表明您的方法最终试图做类似的事情 并且由于以下两个原因将无法正常工作: UCanAccess希望日期文字被括在井号()中,并且 UCanAcce

  • 我尝试了几乎所有的解决方案,但仍然是同一个问题。我在S3中有一个CSV文件,在红移中有一个表。 表结构如下: CSV文件包含以下数据: 当我在RedShift中运行COPY commnad时,它给出了一个错误,时间戳格式或值[YYYY-MM-DD HH:MI:SS],我几乎尝试了RedShift中的所有时间日期格式,但仍然卡住了。复制命令如下: 注意:我以CSV格式从MySQL导出了我的表,并且添

  • 我的用例——我是一名医生。在某一天,我可以工作几个小时,但有些时间不可用。我想创建一个对象“周期我的工作日”。当有人预约上午8点到9点(即“周期病人1预约”)时,该时段将从我的工作日“删除”。当新患者访问myWorkDay时,他只看到myWorkDay-病人1约会。如果病人1释放了他的时隙,那么新患者会看到完整的myWorkDay。 有可能使用JodaTime做到这一点吗? 有一个额外的要求是不必