问题:
我需要在给定日期添加指定的天数。 该函数应返回Date类Object,并应使用FastDateFormat。
解决方案:
我编写了代码,但我需要输出yyyy-MM-dd HH:mm:ss。
当我将Input传递给此函数时
public static void main(String[] args) throws ParseException {
String dateFormat="yyyy-MM-dd HH:mm:ss";
String s2=addDate(dateFormat);
convertStringToDate(s2,dateFormat);
}
public static Date convertStringToDate(String dateInStr, String dateFormat) throws ParseException
{
FastDateFormat fdf=FastDateFormat.getInstance(dateFormat);//("yyyy-MM-dd HH:mm:ss");
Date date = null;
date = fdf.parse(dateInStr);
System.out.println("From convertStringToDate ");
System.out.println(date);
return date;
}
public static String addDate(String dateFormat) throws ParseException{
FastDateFormat fdf=FastDateFormat.getInstance(dateFormat);
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE,1);
String s1=fdf.format(c.getTime());
System.out.println("From addDate ");
System.out.println(s1);
return s1;
}
convertStringToDate的预期输出:
2017-04-21 17:01:31
convertStringToDate的OutputShown:
Fri Apr 21 17:01:31 IST 2017
任何人都可以指导我如何解决上述问题?
答案 0 :(得分:2)
你方法的最后两行没有意义:
fdf.format(c.getTime());
return fdf.parse(fdf.format(c.getTime()));
format
方法返回格式化为字符串的日期。在第一行中,您调用format
,但不对返回值执行任何操作。所以,实际上,这条线没有任何作用。
在第二行中,首先将日期格式化为字符串,然后立即将字符串再次解析为Date
对象。这也无济于事。你也可以写return c.getTime();
。
请注意Date
个对象本身没有格式。您不能让Date
对象以特定格式自动打印,例如yyyy-MM-dd HH:mm:ss
,因为Date
对象本身对格式化本身一无所知。
相反,您应该使用FastDateFormat
对象将Date
对象格式化为String
,然后打印该字符串。例如:
String text = fdf.format(c.getTime());
System.out.println(text);
答案 1 :(得分:0)
以下代码行将以您所需的格式打印日期和时间。
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE,1);
System.out.println(dateFormat.format(cal.getTime()));
答案 2 :(得分:0)
这些代码行中的问题:
fdf.format(c.getTime());
return fdf.parse(fdf.format(c.getTime()));
您的目标很简单,您只需要使用format()
方法将Date
格式化为日期/时间字符串:
String date = fdf.format(c.getTime());
解决方案将是:
public static String addDate(String dateFormat){
FastDateFormat fdf=FastDateFormat.getInstance(dateFormat);
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE,1);
String date = fdf.format(c.getTime());
return date;
}
答案 3 :(得分:0)
当你返回时,你返回一个日期对象,你可以格式化日期对象,但你会得到输出为一个字符串。日期对象的格式将是不变的。
使用FastDateFormat- fdf.format(c.getTime())时。这部分将为您提供Date作为字符串的格式以及您需要的格式,但是当您尝试解析它并将其转换为Date Object时,它将具有以前的Constant格式。
您可以使用FastDateFormat将Date的格式化输出作为字符串,而不是格式化Date对象。
请查看此内容以获取进一步参考 - Date Formatting
创建SimpleDateFormat对象时,指定模式String。模式String的内容决定了日期和时间的格式。
代码根据传递给SimpleDateFormat构造函数的模式String格式化日期和时间。 format方法返回的String包含要显示的格式化日期和时间。
-from Oracle Docs.