从用户输入中获取星期几
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 类。
【讨论】:
以上是关于从用户输入中获取星期几的主要内容,如果未能解决你的问题,请参考以下文章
编制程序实现输入一个1~7之间的数字,输出相应的星期几,如输入1,则输出星期一