【问题标题】:Getting the day of the week from user input从用户输入中获取星期几
【发布时间】:2014-01-26 05:43:47
【问题描述】:
Date date= (new GregorianCalendar(year, month, day)).getTime();
SimpleDateFormat f = new SimpleDateFormat("EEEE");
String dow=f.format(date);

System.out.print("This date is a "+dow);

我让用户输入一个月(1-12)一天(1-31)和一年(1600-2400) 它工作正常,只是它显示错误的日期。例如,它说 2014 年 1 月 1 日是星期六,但它是星期三。 这可能是因为我没有考虑闰年,但我不知道如何去做。我也不知道如何告诉它每个月有多少天。数组? 希望线条也最少。

非常感谢!!!这已经困扰了我一个小时+。这么简单的事情,我应该想到的。我一定很累。

谢谢!!!!!!!

【问题讨论】:

标签: java calendar dayofweek monthcalendar


【解决方案1】:

Month 是从零开始的。试试吧,

Date date= (new GregorianCalendar(year, month-1, day)).getTime();
    SimpleDateFormat f = new SimpleDateFormat("EEEE");
    String dow=f.format(date);

【讨论】:

    【解决方案2】:

    answer by Shashank Kadne 是正确的。

    乔达时间

    仅供参考,使用Joda-Time 2.3 库,这项工作更简单、更干净。

    Joda-Time 使用基于 1 的合理计数来处理以下事情:

    • 一年中的月份
      一月 = 1,二月 = 2,依此类推。
    • 星期几
      星期一 = 1,星期日 = 7。(标准 ISO 8601 星期)

    Joda-Time DateTime 对象知道自己的时区,这与 java.util.Date 对象不同。

    Joda-Time 利用指定的Locale 对象来呈现本地化字符串。

    示例代码

    // Specify a time zone rather than rely on default.
    DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
    
    int year = 2014;
    int month = 1; // Sensible one-based counting. January = 1, February = 2, …
    int dayOfMonth = 2;
    
    DateTime dateTime = new DateTime( year, month, dayOfMonth, 0, 0, 0, timeZone );
    
    // Day-of-week info.
    int dayOfWeekNumber = dateTime.getDayOfWeek(); // Standard week (ISO 8601). Monday = 1, Sunday = 7.
    DateTime.Property dayOfWeekProperty = dateTime.dayOfWeek();
    String dayOfWeekName_Short = dayOfWeekProperty.getAsShortText( Locale.FRANCE );
    String dayOfWeekName_Long = dayOfWeekProperty.getAsText( Locale.FRANCE );
    

    转储到控制台...

    System.out.println( "dateTime: " + dateTime );
    System.out.println( "dayOfWeekNumber: " + dayOfWeekNumber );
    System.out.println( "dayOfWeekName_Short: " + dayOfWeekName_Short );
    System.out.println( "dayOfWeekName_Long: " + dayOfWeekName_Long );
    

    运行时……

    dateTime: 2014-01-02T00:00:00.000+01:00
    dayOfWeekNumber: 4
    dayOfWeekName_Short: jeu.
    dayOfWeekName_Long: jeudi
    

    没有时间和时区

    如果您真的只想要没有任何时间或时区的日期,请编写类似的代码,但使用 LocalDate 类。

    【讨论】:

      猜你喜欢
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 2017-11-07
      • 1970-01-01
      相关资源
      最近更新 更多