今天是星期一(应该返回2),但是返回7(星期六)。我错过了什么?
int today = Calendar.DAY_OF_WEEK;
System.out.println(today);
答案 0 :(得分:10)
而不是
int today = Calendar.DAY_OF_WEEK;
你必须使用
Calendar cal = Calendar.getInstance();
int today = cal.get(Calendar.DAY_OF_WEEK);
获得价值。
按照您的方式,您只打印常量Calendar.DAY_OF_WEEK
的值,并且不会获得Calendar
对象当天的实际值。
答案 1 :(得分:1)
使用时
int today = Calendar.DAY_OF_WEEK;
这是归还给你的......
/**
* Field number for <code>get</code> and <code>set</code> indicating the day
* of the week. This field takes values <code>SUNDAY</code>,
* <code>MONDAY</code>, <code>TUESDAY</code>, <code>WEDNESDAY</code>,
* <code>THURSDAY</code>, <code>FRIDAY</code>, and <code>SATURDAY</code>.
*
* @see #SUNDAY
* @see #MONDAY
* @see #TUESDAY
* @see #WEDNESDAY
* @see #THURSDAY
* @see #FRIDAY
* @see #SATURDAY
*/
public final static int DAY_OF_WEEK = 7;
答案 2 :(得分:1)
旧的日期时间 API(java.util
日期时间类型及其格式类型 SimpleDateFormat
)已过时且容易出错。建议完全停止使用,改用java.time
,modern date-time API*。
使用现代 API 的解决方案:
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.TextStyle;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
// To use JVM's timezone, simply remove the argument or use
// ZoneId.systemDefault() as the argument
LocalDate date = LocalDate.now(ZoneId.of("America/New_York"));
// As enum
DayOfWeek dw = date.getDayOfWeek();
System.out.println(dw); // Value
System.out.println(dw.ordinal()); // Ordinal
// As String
String dayName = dw.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
System.out.println(dayName);
// As int
int day = dw.getValue();
System.out.println(day);
}
}
输出:
SATURDAY
5
Saturday
6
从 modern date-time API 了解有关 Trail: Date Time* 的更多信息。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。
答案 3 :(得分:0)
使用Calendar.DAY_OF_WEEK
将返回用于get
方法的字段编号(在该情况下为7)。