首页 文章

格里高利历java错误

提问于
浏览
-1

我无法打印GregorianCalendar

package Tests;

import java.util.Date;
import java.util.GregorianCalendar;

public class Data 
{

    public static void main(String[] args) 
    {
        GregorianCalendar time = new GregorianCalendar(1999, 2, 2);
        System.out.println(time);
    }

}

我收到这个

java.util.GregorianCalendar [time =?,areFieldsSet = false,areAllFieldsSet = false,lenient = true,zone = sun.util.calendar.ZoneInfo [id =“Europe / Belgrade”,offset = 3600000,dstSavings = 3600000,useDaylight =真,过渡= 119,lastRule = java.util.SimpleTimeZone中[ID =欧洲/贝尔格莱德,偏移= 3600000,dstSavings = 3600000,useDaylight =真,startYear = 0,STARTMODE = 2,startMonth = 2,朝九特派= -1, startDayOfWeek = 1,开始时间= 3600000,startTimeMode = 2,endMode = 2,endMonth = 9,endday指定= -1,一个endDayOfWeek = 1,结束时间= 3600000,endTimeMode = 2]],Firstdayofweek可= 2,minimalDaysInFirstWeek = 4,ERA =? ,YEAR = 1999,MONTH = 2,WEEK_OF_YEAR = ?, WEEK_OF_MONTH = ?, DAY_OF_MONTH = 2,DAY_OF_YEAR = ?, DAY_OF_WEEK = ?, DAY_OF_WEEK_IN_MONTH = ?, AM_PM = 0,HOUR = 0,HOUR_OF_DAY = 0,MINUTE = 0,SECOND = 0,微差= ?, ZONE_OFFSET = ?, DST_OFFSET =?]

我怎么打印出来的?

3 回答

  • 0

    你可以这样使用: -

    GregorianCalendar calendar = new GregorianCalendar();
    Date now = calendar.getTime();
    System.out.println(now);
    

    要么

    Calendar cal2 = new GregorianCalendar(2010, 9, 26);  // allocate with the specified date
    cal2.get(Calendar.DAY_OF_WEEK);                      // 1 (Sunday) to 7 (Saturday)
    
  • 0

    你打电话的时候

    System.out.println(time)
    

    你实际上调用了Calendar实例的toString()方法(在这种情况下,一个GregorianCalendar)

    为了获得格式正确的日期,请使用Javadoc中所述的 SimpleDateFormat

    https://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html

  • 0

    java.time

    现代解决方案使用LocalDate类 . 避免 GregorianCalendar ,因为它现在已经过时了 .

    LocalDate ld = LocalDate.of( 1999 , Month.FEBRUARY , 2 ) ;
    

    ld.toString():1999-02-02

    toString 方法使用标准ISO 8601格式 . 对于其他格式,请使用 DateTimeFormatter 类 . 搜索Stack Overflow以获取更多示例和讨论,因为它已被覆盖了很多次 .

    通常最好让 DateTimeFormatter 自动为您定位 .

    Locale locale = Locale.CANADA_FRENCH ;
    DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL ).withLocale( locale ) ;
    String output = ld.format( f ) ;
    

    mardi2février1999


    关于java.time

    java.time框架内置于Java 8及更高版本中 . 这些类取代了麻烦的旧legacy日期时间类,如java.util.DateCalendarSimpleDateFormat .

    Joda-Time项目现在位于maintenance mode,建议迁移到java.time类 .

    要了解更多信息,请参阅Oracle Tutorial . 并搜索Stack Overflow以获取许多示例和解释 . 规格是JSR 310 .

    从哪里获取java.time类?

    ThreeTen-Extra项目使用其他类扩展java.time . 该项目是未来可能添加到java.time的试验场 . 您可以在这里找到一些有用的类,例如IntervalYearWeekYearQuartermore .

相关问题