在Java中需要以yyyy/mm/dd格式显示日期

3

我正在使用 Nebulla DateChooserCombo。我已经将它用作 dateChooserFrom.getText();。它产生的结果是类似于 7/31/2011 的日期格式,这是 m/dd/yyyymm/dd/yyyy 格式。我需要以 yyyy/mm/dd 的格式呈现结果。为此,我已经使用了以下代码。

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
String s = df.format(dateChooserFrom.getText()); 

但是当我运行代码时,它会显示无法将给定的对象格式化为日期。所以请问有人能帮助我吗?我正在使用Eclipse RCP和Java。


实际抛出的异常是什么?需要更多信息。 - Brett Walker
@ Brett,实际异常为“java.lang.IllegalArgumentException:无法将给定的对象格式化为日期 在java.text.DateFormat.format(未知来源)中 在java.text.Format.format(未知来源)中” - Dinup Kandel
你说这个组件生成的是“mm/dd/yyyy”,但你的模式是“yyyy-MM-dd”。看到区别了吗?斜杠和减号不同。 - rompetroll
顺便问一下,这是你的组件吗?http://www.eclipse.org/nebula/widgets/datechooser/datechooser.php - rompetroll
@deadsven 没问题,任何格式都可以,比如“yyyy-mm-dd”或“yyyy/mm/dd”,但是我需要年份在前面,月份在中间。是的,我正在使用你写的代码。 - Dinup Kandel
3个回答

11
DateFormat dffrom = new SimpleDateFormat("M/dd/yyyy");
DateFormat dfto = new SimpleDateFormat("yyyy-MM-dd");  
Date today = dffrom.parse("7/1/2011");
String s = dfto.format(today);

首先将字符串转换为日期。


@ cularis 谢谢,可以用。但有时候“M/dd/yyyy”也可能是“MM/dd/yyyy”,我应该计算长度并实现条件。 - Dinup Kandel

1
我不知道Nebulla DateChooserCombo是什么,但我猜问题与实例方法getText的返回类型有关。它是一个日期吗?因为你必须传递一个java.util.Date的实例给format方法。

.getText 会以字符串格式返回结果。 - Dinup Kandel
所以这就是你不能使用格式化方法的原因。我认为你可以从这个文本中创建一个日期,并使用格式化程序获取其他格式。 - lucapette
各位,我没有找到任何方法可以使dateChooserCombo以日期格式返回。我能否将给定的字符串值格式化为日期? - Dinup Kandel
1
请查看SimpleDateFormatter的文档。该类还包含一个解析日期的方法。您可以创建一个格式化程序将输入转换为日期。然后,您可以使用已经编写的代码。@cularis在下一个回复中添加了代码 :) - lucapette

1
使用这个:
public class Class1 {
    public static void main(String args[]) {
      Date date = new Date();
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(date);
      SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd");//you can use any format that you want, for example:("yyyy/MM/dd")
      String s = SDF.format(date);
      System.out.print(s);
      }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接