2015-08-08 70 views
0
public Calendar getDateAfterXYearYMonthZDays(Calendar calendar) { 

     Calendar c=Calendar.getInstance(); 
     c.add(Calendar.DATE, 3); 
     c.add(Calendar.YEAR, 2); 
     c.add(Calendar.MONTH,1); 

     return c; 
    } 

我得到一个格里高利的字符串,但我希望“星期六8月22日22:07:27 IST 2015”,这也应该返回上述方法。如何获取格列高利弦乐的日期?

+0

,您需要更改方法签名。 – Codebender

+0

“我得到一个格里高利的字符串” - 你是什么意思? (你的方法根本不返回字符串...) –

+0

你的方法参数应该是'String'并且返回类型应该是'Date' –

回答

0

您应该使用JodaTime,因为它会为您节省很多麻烦。

http://www.joda.org/joda-time/

在JodaTime你能做到以下几点,

DateTime dateTime = new DateTime(); 
String myDateTimeString = dateTime.toString("E M d HH:mm:ss z y"); 
// myDateTimeString's value - Weekday Month Day Time TimeZone Year 

这里是在其他格式类型的文档页面。

http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html

JodaTime还支持公历系统,并提供了一些辅助的方法来从日历转换为JodaTime。

1

问题并不清楚,但据我了解,你有一个Calendar,你想String出来。首先将您的方法签名更改为返回String,然后从Calendar获取Date实例,并使用SimpleDateFormatterDate进行格式化。

此外,您从未使用方法参数calendar。在将它作为参数传递之前进行初始化。

public String getDateAfterXYearYMonthZDays(Calendar calendar) { 

    calendar.add(Calendar.DATE, 3); 
    calendar.add(Calendar.YEAR, 2); 
    calendar.add(Calendar.MONTH,1); 

    SimpleDateFormat formatter=new SimpleDateFormat("E M d HH:mm:ss z d"); 
    return formatter.format(c.getTime());   
} 
0

你可以使用下面的代码的日期:如果你想返回一个字符串

public Date getDateAfterXYearYMonthZDays(String gregorianString) { 

     SimpleDateFormat formatter=new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy"); 

     Date formattedDate = null; 

     try { 
      formattedDate = formatter.parse(gregorianString); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return formattedDate; 
    }