Java:日期格式转换问题

时间:2012-05-28 13:31:02

标签: java simpledateformat

我的日期格式为EEE MMM dd HH:mm:ss zzz yyyy

我必须将其转换为dd/MM/yyyy

我做了以下事情:

SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
SimpleDateFormat fmtddMMyyyy = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date d = fmt.parse("Mon May 28 00:00:00 IST 2012");<br>
String formattedDate = fmtddMMyyyy.format(d); 

当我尝试打印d时,会显示0027833001988071567

我哪里错了?

2 个答案:

答案 0 :(得分:2)

我必须猜测你的真实代码只是与你展示的内容有轻微联系。由于一些实验和文件。

原始解析可能会抛出一个异常,你打印的每个都与你的日期操作无关。

为了解决问题

  • 打印您要转换的字符串
  • 打印解析日期
  • 打印转换后的字符串
  • 使用带有Locale参数的构造函数变体,这样stackoverflow上的每个人都可以重现它,并且您的应用程序在它运行的任何地方都可以正常运行。

所有这一切都在一个简单的类中,只包含一个包含代码的main方法。

如果问题仍然存在,请返回代码及其输出。

根据我的建议部分应用,你可能会以此结束:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;

public class Experiment {
public static void main(String args[]) throws ParseException {
    SimpleDateFormat fmt = new SimpleDateFormat(
            "EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
    SimpleDateFormat fmtddMMyyyy = new SimpleDateFormat("dd/MM/yyyy",
            Locale.US);
    java.util.Date d = fmt.parse("Mon May 28 00:00:00 IST 2012");
    String formattedDate = fmtddMMyyyy.format(d);
    System.out.println(formattedDate);
}
}

打印出来

28/05/2012

答案 1 :(得分:1)

尝试:

String formattedDate = fmtddMMyyyy.format(d);
UPD:我得到了以下解决方案:

SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);

工作正常(没有语言环境定义也不适合我)。因为您根据英语语言定义月份名称和星期几名称,而不是我所设想的本地名称。