我想在10-APR-2014
添加17天并将日期转换为dd-MMM-yyy
y格式,但我得到Sun Apr 27 00:00:00 GMT+05:30 2014
。
这是我的代码:
import java.util.*;
import java.text.*;
public class HelloWorld{
public static void main(String []args){
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, 17);
String output = sdf.format(c.getTime());
System.out.println(output);
System.out.print(new SimpleDateFormat("dd-MMM-yyyy").parse(output));
}
}
如何将输出设为27-Apr-2014
?
答案 0 :(得分:2)
您正在打印从日历日期格式化的字符串解析的日期。
而是打印格式化的日历日期:
System.out.print(new SimpleDateFormat("dd-MMM-yyyy").format(c.getTime()));
如果显示和使用日期是不相同的,请执行以下操作:
Date date; // from Calendar or wherever
String str = new SimpleDateFormat("dd-MMM-yyyy").format(date));
// display str
然后,当您想要对所选日期执行某些操作时:
String selection;
Date date = new SimpleDateFormat("dd-MMM-yyyy").parse(selection));
// do something with date
答案 1 :(得分:0)
answer by Bohemian是正确的。在这里,我提出了另一种解决方案。
与Java捆绑在一起的java.util.Date和.Calendar类非常麻烦。避免他们。在Java 8中使用Joda-Time或新的java.time包。
如果您只需要一个没有任何时间组件的日期,则Joda-Time和java.time都会提供LocalDate课程。
即使仅限日期,您仍然需要一个时区才能获得“今天”。在任何时候,日期可能会变化±1,具体取决于您在地球上的位置。如果未指定时区,则将应用JVM的默认时区。
以下是Joda-Time 2.3中的一些示例代码。
根据某个时区确定“今天”。加上十七天。
DateTimeZone timeZone = DateTimeZone.forID( "Asia/Kolkata" );
LocalDate today = new LocalDate( timeZone );
LocalDate seventeenDaysLater = today.plusDays( 17 );
生成日期时间值的字符串表示...
DateTimeFormatter formatter = DateTimeFormat.forPattern( "dd-MMM-yyyy" );
String output = formatter.print( seventeenDaysLater );
转储到控制台...
System.out.println( "today: " + today );
System.out.println( "seventeenDaysLater: " + seventeenDaysLater );
System.out.println( "output: " + output );
跑步时......
today: 2014-04-21
seventeenDaysLater: 2014-05-08
output: 08-May-2014