【问题标题】:parsing IST date format解析IST日期格式
【发布时间】:2014-10-14 07:03:32
【问题描述】:

我正在使用 Talend 5.5。

在我的项目中,我需要将 IST 格式的日期转换为这种格式:“yyyy-MM-dd”。

例如:

星期三 0ct 08 00:00:00 IST 2014

2014-10-08

我把这段代码放在一个 tMap 组件中:

new SimpleDateFormat("yyyy-MM-dd")
 .parse(new SimpleDateFormat("yyyy-MM-dd")
 .format(new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy").parse(row4.Date)))

row4.date 是我要转换的日期,例如等于“wed 0ct 08 00:00:00 IST 2014”。

我得到了这个例外:

java.lang.NullPointerException
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1380)
at java.text.DateFormat.parse(DateFormat.java:355)

异常的原因是什么?

【问题讨论】:

  • 您确定row4.Date 是您期望的值吗?看起来 te 值是null

标签: java date talend


【解决方案1】:
   if(null!=row4 && null!=row4.Date)//use null check    
     new SimpleDateFormat("yyyy-MM-dd")
     .parse(new SimpleDateFormat("yyyy-MM-dd")
     .format(new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy").parse(row4.Date)))

处理 Null 指针的一种方法是进行 null 检查,另一种更好的方法是使用 try catch 块,这样它就不会中断代码执行。

【讨论】:

  • 这会给你一个编译器错误。您必须在剪辑开始时进行空检查。
  • 还是 row4 本身为空呢?
【解决方案2】:

试试这个:

Date date = new Date();
System.out.println(date);
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(formatter.format(date));

【讨论】:

  • 这对 OP 没有帮助。因为您格式化实际日期而不是row4.Date
  • "例如,row4.date 等于 "wed 0ct 08 00:00:00 IST 2014"。这只不过是一个来自用户的带有 toString 表示的 Date 对象,那么你为什么认为它不起作用呢?顺便说一句,上面的示例只是如何将日期从“wed 0ct 08 00:00:00 IST 2014”格式获取到“2014-10-08”的用法。希望这会有所帮助。
  • 但是 OP 知道他必须如何确定日期。他在解析日期时遇到了错误。
  • 但是看看他的代码,这是我们应该推荐的吗?
  • 没有。但是,如果 row4.Date 不是 null 并且它具有正确的格式,它应该可以工作。对于评论家,您应该写评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多