例如,我有日期:“23/2/2010”(2010年2月23日)。我想把它传递给一个返回星期几的函数。我该怎么做呢?
在这个例子中,函数应该返回String "Tue"。
此外,如果只需要日期顺序,如何检索?
例如,我有日期:“23/2/2010”(2010年2月23日)。我想把它传递给一个返回星期几的函数。我该怎么做呢?
在这个例子中,函数应该返回String "Tue"。
此外,如果只需要日期顺序,如何检索?
当前回答
这是正确的…
java.time.LocalDate; //package related to time and date
它提供了内置方法getDayOfWeek()来获取特定星期的日期:
int t;
Scanner s = new Scanner(System.in);
t = s.nextInt();
s.nextLine();
while(t-->0) {
int d, m, y;
String ss = s.nextLine();
String []sss = ss.split(" ");
d=Integer.parseInt(sss[0]);
m = Integer.parseInt(sss[1]);
y = Integer.parseInt(sss[2]);
LocalDate l = LocalDate.of(y, m, d); //method to get the localdate instance
System.out.println(l.getDayOfWeek()); //this returns the enum DayOfWeek
要将枚举l.getDayOfWeek()的值赋给一个字符串,您可能会使用enum中名为name()的方法,该方法返回enum对象的值。
其他回答
java.time
使用java。在Java 8及以后版本中内置了时间框架。
DayOfWeek枚举可以生成一个字符串,其中包含自动本地化为本地语言和文化规范的日期名称。指定一个TextStyle来指示您想要长形式或缩写名称。
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.time.format.TextStyle
import java.util.Locale
import java.time.DayOfWeek;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/M/yyyy");
LocalDate date = LocalDate.parse("23/2/2010", formatter); // LocalDate = 2010-02-23
DayOfWeek dow = date.getDayOfWeek(); // Extracts a `DayOfWeek` enum object.
String output = dow.getDisplayName(TextStyle.SHORT, Locale.US); // String = Tue
通过使用java.util.scanner包给用户输入日期、月和年来查找星期几的程序:
import java.util.Scanner;
public class Calender {
public static String getDay(String day, String month, String year) {
int ym, yp, d, ay, a = 0;
int by = 20;
int[] y = new int[]{6, 4, 2, 0};
int[] m = new int []{0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5};
String[] wd = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int gd = Integer.parseInt(day);
int gm = Integer.parseInt(month);
int gy = Integer.parseInt(year);
ym = gy % 100;
yp = ym / 4;
ay = gy / 100;
while (ay != by) {
by = by + 1;
a = a + 1;
if(a == 4) {
a = 0;
}
}
if ((ym % 4 == 0) && (gm == 2)) {
d = (gd + m[gm - 1] + ym + yp + y[a] - 1) % 7;
} else
d = (gd + m[gm - 1] + ym + yp + y[a]) % 7;
return wd[d];
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String day = in.next();
String month = in.next();
String year = in.next();
System.out.println(getDay(day, month, year));
}
}
你可以使用下面的方法通过传递一个特定的日期来获取星期几,
这里对于Calendar类的set方法,难点在于month参数的索引将从0开始。
public static String getDay(int day, int month, int year) {
Calendar cal = Calendar.getInstance();
if(month==1){
cal.set(year,0,day);
}else{
cal.set(year,month-1,day);
}
int dow = cal.get(Calendar.DAY_OF_WEEK);
switch (dow) {
case 1:
return "SUNDAY";
case 2:
return "MONDAY";
case 3:
return "TUESDAY";
case 4:
return "WEDNESDAY";
case 5:
return "THURSDAY";
case 6:
return "FRIDAY";
case 7:
return "SATURDAY";
default:
System.out.println("GO To Hell....");
}
return null;
}
//to get day of any date
import java.util.Scanner;
import java.util.Calendar;
import java.util.Date;
public class Show {
public static String getDay(String day,String month, String year){
String input_date = month+"/"+day+"/"+year;
Date now = new Date(input_date);
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
int final_day = (calendar.get(Calendar.DAY_OF_WEEK));
String finalDay[]={"SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"};
System.out.println(finalDay[final_day-1]);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String month = in.next();
String day = in.next();
String year = in.next();
getDay(day, month, year);
}
}
是的。根据具体情况:
You can use java.util.Calendar: Calendar c = Calendar.getInstance(); c.setTime(yourDate); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK); if you need the output to be Tue rather than 3 (Days of week are indexed starting at 1 for Sunday, see Calendar.SUNDAY), instead of going through a calendar, just reformat the string: new SimpleDateFormat("EE").format(date) (EE meaning "day of week, short version") if you have your input as string, rather than Date, you should use SimpleDateFormat to parse it: new SimpleDateFormat("dd/M/yyyy").parse(dateString) you can use joda-time's DateTime and call dateTime.dayOfWeek() and/or DateTimeFormat. edit: since Java 8 you can now use java.time package instead of joda-time