Calendar构造函数Java toString

时间:2012-10-20 14:21:40

标签: java constructor calendar

我要做的是将日期传递到日历中,以便格式化日期以备另一个构造函数使用。这样我以后可以使用日历提供的功能来使用它。

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

5 个答案:

答案 0 :(得分:1)

假设DateDCalendar,则默认toString()实施。您需要致电getTime()以获取date

来自Calendar#toString()

的java文档
  

返回此日历的字符串表示形式。此方法仅用于调试目的,返回字符串的格式可能因实现而异。返回的字符串可能为空,但可能不为null。

您可以使用SimpleDateFormat将其转换为String

答案 1 :(得分:1)

首先,在打印实例时,不需要显式使用toString()方法。它会自动调用。

此外,您应该使用SimpleDateFormatDate格式化为必需的字符串格式: -

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类而不是CalendarCalendar课程是为了一个日期加上一个时间。此外,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