我要做的是将日期传递到日历中,以便格式化日期以备另一个构造函数使用。这样我以后可以使用日历提供的功能来使用它。
public class Top {
public static void main(String[] args) {
Something st = new Something(getCalendar(20,10,2012));
System.out.println(st.toString());
}
public static Calendar getCalendar(int day, int month, int year){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, day);
return cal;
}
}
tostring方法。
public String toString(){
String s = "nDate: " + DateD;
return s;
}
日期:java.util.GregorianCalendar [time =?,areFieldsSet = false,areAllFieldsSet = true,lenient = true
而不是 日期:20/10/2012
答案 0 :(得分:1)
假设DateD
为Calendar
,则默认toString()
实施。您需要致电getTime()
以获取date
。
返回此日历的字符串表示形式。此方法仅用于调试目的,返回字符串的格式可能因实现而异。返回的字符串可能为空,但可能不为null。
您可以使用SimpleDateFormat将其转换为String
答案 1 :(得分:1)
首先,在打印实例时,不需要显式使用toString()
方法。它会自动调用。
此外,您应该使用SimpleDateFormat
将Date
格式化为必需的字符串格式: -
Calendar cal = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
String date = format.format(cal.getTime());
System.out.println(date);
输出: -
2012/10/20
答案 2 :(得分:1)
如果要将日历实例表示的日期打印为字符串,则应使用SimpleDateFormatter
格式化所需格式的日期,如下所示:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyy");
System.out.println(sdf.format(DateD.getTime());
答案 3 :(得分:1)
看起来对我来说太过分了。
作为用户,我宁愿通过日期并明确合同。提供将String转换为Date的便捷方法:
public class Top {
public static final DateFormat DEFAULT_FORMAT;
static {
DEFAULT_FORMAT = new SimpleDateFormat("yyyy-MMM-dd");
DEFAULT_FORMAT.setLenient(false);
}
public static void main(String [] args) {
}
public static Date convert(String dateStr) throws ParseException {
return DEFAULT_FORMAT.parse(dateStr);
}
public static String convert(Date d) {
return DEFAULT_FORMAT.format(d);
}
}
答案 4 :(得分:0)
LocalDate
显然,您想要一个没有日期的日期值。为此,使用LocalDate
类而不是Calendar
。 Calendar
课程是为了一个日期加上一个时间。此外,Calendar
现在已经遗留下来,在被证明是麻烦,混乱和有缺陷之后被java.time类取代。
只需将所需的年,月和日期传递给工厂方法即可。与Calendar
不同,1月至12月的月份是1-12号。
LocalDate ld = LocalDate.of( 2012 , 10 , 20 );
或者,传递一个月的常数。
LocalDate ld = LocalDate.of( 2012 , Month.OCTOBER , 20 );
java.time类倾向于使用静态工厂方法而不是new
的构造函数。
要生成标准ISO 8601格式的字符串,请调用toString
String output = ld.toString() ;
2012年10月20日
对于其他格式,请搜索DateTimeFormatter
的Stack Overflow。例如:
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
String output = ld.format( f );
20/10/2012