0

我得到这样的系统时间(Thu Nov 14 14:38:16 IST 2013),我必须将其转换为(MM/dd/yy)。我尝试在解析时遇到错误是我的代码,

String stime = calendar.getTime().toString();         
System.out.println("  time is " +stime);
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy");          
Date dateCC = formatter.parse(stime);
calendar.setTime(dateCC);

错误是 NullpointerException,但我想要这种格式的日期(MM/dd/yy)。请告诉我我犯了什么错误?

4

4 回答 4

1

像这样Date没有格式。它仅代表自纪元以来的时间(格林威治标准时间 1970 年 1 月 1 日 00:00:00)。因此,说您想要以Date特定格式获取 是没有意义的。但是,您可以通过使用SimpleDateFormat.

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy");          
String dateString = formatter.format(calendar.getTime());
于 2013-11-14T09:23:49.437 回答
1

您必须使用所需格式创建一个 SimpleDateFormat 实例,然后使用它来格式化 Date 或 Time 对象,如下所示:

 SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy");
 System.out.println(sdf.format(Calendar.getInstance().getTime()));

当需要有关允许的格式的帮助时,请参阅此JavaDoc 。

于 2013-11-14T09:31:30.337 回答
0

试试这个:

    Calendar calendar = Calendar.getInstance();        
    SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");          
    String stime = formatter.format(calendar.getTime());
    System.out.println(stime);
    Date dateCC = formatter.parse(stime);
    calendar.setTime(dateCC);
    System.out.println(calendar.getTime());
于 2013-11-14T09:38:24.897 回答
0

在 Java 7 中的 Joda-Time 2.3 中。

org.joda.time.DateTimeZone losAngelesTimeZone = org.joda.time.DateTimeZone.forID("America/Los_Angeles");
org.joda.time.DateTime nowInCalifornia = new org.joda.time.DateTime( losAngelesTimeZone );
org.joda.time.format.DateTimeFormatter formatter = org.joda.time.format.DateTimeFormat.forPattern("MM/dd/yy");
String nowInCaliforniaAsString = formatter.print( nowInCalifornia );
System.out.println( "nowInCaliforniaAsString: " + nowInCaliforniaAsString );
于 2013-11-14T09:43:46.430 回答