【问题标题】:Convert timestamp to simple date in Java and add to ParseObject将时间戳转换为 Java 中的简单日期并添加到 ParseObject
【发布时间】:2017-04-07 10:00:45
【问题描述】:

不重复:我打算针对这个问题解决在尝试将格式化日期添加回ParseObject 以进行渲染时抛出的java.lang.IllegalArgumentException

我有一个日期列表,当我将它们呈现到我的页面时,我想以更易读的格式显示它们。即我希望Wed Mar 29 13:32:35 CEST 2017 成为Wed Mar 29

for (ParseObject requestObject: requestsArrayList) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date date = null;
    try {
        date = sdf.parse(sdf.format(requestObject.getDate(ParseConstantsUtil.REQUEST_DATE_REQUESTED)));
        log.info(String.valueOf(date));
    } catch (java.text.ParseException e1) {
        e1.printStackTrace();
    }
    requestObject.add(ParseConstantsUtil.REQUEST_DATE_REQUESTED, date);
}
requestObject.add(ParseConstantsUtil.REQUEST_DATE_REQUESTED, date);

我认为SimpleDateFormat 就足够了,但我不能放弃额外的时间戳信息并将对象添加回我的集合。我该怎么办?

例外:

java.lang.IllegalArgumentException: not implemented!
    at org.parse4j.operation.AddOperation.apply(AddOperation.java:26) ~[parse4j-1.5-SNAPSHOT.jar:na]
    at org.parse4j.ParseObject.performOperation(ParseObject.java:375) ~[parse4j-1.5-SNAPSHOT.jar:na]
    at org.parse4j.ParseObject.addAll(ParseObject.java:301) ~[parse4j-1.5-SNAPSHOT.jar:na]
    at org.parse4j.ParseObject.add(ParseObject.java:296) ~[parse4j-1.5-SNAPSHOT.jar:na]
    at com.nnit.automation.controller.IndexController.findRequestsByCurrentUser(IndexController.java:117) ~[classes/:na]
    at com.nnit.automation.controller.IndexController.findRequestsByCurrentUser(IndexController.java:61) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]

【问题讨论】:

  • SimpleDateFormat 的结果如何?
  • 日志吐出相同的日期格式。也许我对我想要什么感到困惑。我只想从日期中删除时间戳和时区:2017-04-07 12:08:33.637 INFO 224456 --- [nio-8081-exec-6] com.test.date.WebApplication : Wed Mar 29 00:00:00 CEST 2017。好像我已经有了 SimpleDateFormat。
  • 您似乎正在记录Date.toString() 的结果。 Date 对象 just 代表一个时间点 - 它不知道时区或格式。如果您想以特定格式记录Date,则需要在登录时进行格式化

标签: java date parse-platform simpledateformat parse4j


【解决方案1】:

我们总是可以将日期转换为所需格式的字符串并添加到requestObject中

更新示例

for (ParseObject requestObject: requestsArrayList) {
SimpleDateFormat sdf2 = new SimpleDateFormat("E MMM dd");
String date = null;
try {
    date = sdf.format(requestObject.getDate(ParseConstantsUtil.REQUEST_DATE_REQUESTED));
    log.info(String.valueOf(date));
} catch (java.text.ParseException e1) {
    e1.printStackTrace();
}
requestObject.add(ParseConstantsUtil.REQUEST_DATE_REQUESTED, date);
}

【讨论】:

  • 我收到了一个java.text.ParseException: Unparseable date: "Fri Feb 24 18:27:07 CET 2017" 这个...
  • 这里Wed Mar 29 00:00:00 CEST 2017
  • 好的,所以这肯定会正确格式化日期,即Fri Apr 14,但当我尝试将其添加回对象时,它会给出java.lang.IllegalArgumentException: not implemented!。你知道为什么会这样吗?
  • 这可能意味着 requestObject.add(, ) 方法没有实现。您能否提供更多背景信息。使用此代码的位置,您是否尝试调用 api,使用的任何特定框架。
  • 我正在使用 Parse4J 库。这是我正在迭代的 ParseObject:github.com/thiagolocatelli/parse4j/blob/master/src/main/java/…
【解决方案2】:
try {
    SimpleDateFormat inputDate = new SimpleDateFormat("EEE MMM HH:mm:ss yyyy", Locale.US);
    SimpleDateFormat outputDate = new SimpleDateFormat("EEE MMM dd", Locale.US);

    String date = outputDate.format(inputDate.parse(input.replace("CEST ","")));


} catch (ParseException e) {
    e.printStackTrace();
}

【讨论】:

    猜你喜欢
    • 2011-04-09
    • 2022-01-14
    • 2016-03-25
    • 2011-10-20
    • 2012-08-01
    • 1970-01-01
    • 2014-05-16
    • 2014-12-03
    • 1970-01-01
    相关资源
    最近更新 更多