0

我有格式的日期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.

我哪里错了?

4

2 回答 2

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
于 2012-05-28T14:20:30.933 回答
1

尝试:

String formattedDate = fmtddMMyyyy.format(d);

UPD:嗯,我得到了以下解决方案:

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

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

于 2012-05-28T13:35:42.683 回答