从用户输入中获取星期几

Posted

技术标签:

【中文标题】从用户输入中获取星期几【英文标题】: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 日是星期六,但它是星期三。 这可能是因为我没有考虑闰年,但我不知道如何去做。我也不知道如何告诉它每个月有多少天。数组? 希望线条也最少。

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

谢谢!!!!!!!

【问题讨论】:

How to determine day of week by passing specific date?的可能重复 月份从零开始。 docs.oracle.com/javase/7/docs/api/java/util/… 【参考方案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 类。

【讨论】:

以上是关于从用户输入中获取星期几的主要内容,如果未能解决你的问题,请参考以下文章

javascript 从Date中获取星期几

java中如何获取日期时间中的星期几?

编制程序实现输入一个1~7之间的数字,输出相应的星期几,如输入1,则输出星期一

编写程序,提示用户输入年份和该年第一天的星期,在控制台上显示该年的日历表。

本程序要求输入一个数字,输出一个对应星期的英文单词

python输入日期输出星期几