我想同时测试星期几和月份中的Java日历。在过去的几个小时中,我一直在尝试找出测试课程。 我想输入星期几的值,并测试星期几是否会按预期输出。任何帮助将不胜感激。 我想我需要每天,每月和每年喂食,但我不知道该如何喂食。 我需要在此编码练习中使用日历。
到目前为止我的代码
import java.util.Calendar;
import java.util.Scanner;
public class dayOfWeek {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
Scanner input = new Scanner (System.in);
//Input Day
System.out.println("Enter the Day (last two numbers) in number format:");
int day= input.nextInt( );
//Input Month
System.out.println("Enter the Month (last two numbers) in number format:");
int month= input.nextInt( );
//Input Year
System.out.println("Enter the Year (last two numbers) in number format:");
int year= input.nextInt( );
c.set(year, month, day);
//Display the day
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
// Display Day of month
int dayOfMonth = c.get(Calendar.DAY_OF_MONTH);
//Print date in format
System.out.println(String.format("%d/%d/%d",day,month,year));
//if statement to print out day of week
if (dayOfWeek == Calendar.SUNDAY) {
System.out.println("Sunday");
}
else if (dayOfWeek == Calendar.MONDAY) {
System.out.println("Monday");
}
else if (dayOfWeek == Calendar.TUESDAY) {
System.out.println("Tuesday");
}
else if (dayOfWeek == Calendar.WEDNESDAY) {
System.out.println("Wednesday");
}
else if (dayOfWeek == Calendar.THURSDAY) {
System.out.println("Thursday");
}
else if (dayOfWeek == Calendar.FRIDAY) {
System.out.println("Friday");
}
else if (dayOfWeek == Calendar.SATURDAY) {
System.out.println("Saturday");
//close Scanner in
input.close( );
}
}
public static Object dayOfWeek(int i) {
// TODO Auto-generated method stub
return null;
}
}
答案 0 :(得分:0)
Calendar
类。LocalDate
将您的三个整数解析为日期。如果输入无效,则捕获抛出的异常(如果不存在这样的日期)。将LocalDate
用作无日期,无时区的仅日期值。
try {
LocalDate ld = LocalDate.of( y , m , d ) ;
} catch ( DateTimeException e ) {
… handle invalid input …
}
DayOfWeek
使用DayOfWeek
之类的DayOfWeek.MONDAY
枚举传递您期望的星期几。
DayOfWeek dow = DayOfWeek.MONDAY ; // Passed into your test.
if( ld.getDayOfWeek().equals( dow ) ) { … }
如果必须与尚未更新为 java.time 的旧代码进行互操作,则可以来回转换。调用添加到旧类中的新转换方法。
如果您需要Calendar
,更具体地说,是GregorianCalendar
,我们需要一个时间和一个时区。
您可能希望使用当天的第一时间。永远不要假设一天从00:00:00开始。诸如夏令时(DST)之类的异常表示一天可能在另一个时间(例如01:00:00)开始。让 java.time 确定第一时刻。
以continent/region
的格式指定proper time zone name,例如America/Montreal
,Africa/Casablanca
或Pacific/Auckland
。切勿使用3-4个字母的缩写,例如EST
或IST
,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = ld.atStartOfDay( z ) ;
立即转换。
Calendar c = GregorianCalendar.from( zdt ) ; // Convert from modern class to legacy class. Do so only if absolutely required; otherwise, avoid the legacy date-time classes like the Plague.
java.time框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和SimpleDateFormat
。
目前位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
在哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展了java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。您可能会在这里找到一些有用的类,例如Interval
,YearWeek
,YearQuarter
和more。