在安卓系统中获得当前星期几最简单的方法是什么?

在安卓系统中,获得当前星期几最简单的方法是什么?

221590 次浏览

JavaCalendar类可以工作。

Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);


switch (day) {
case Calendar.SUNDAY:
// Current day is Sunday
break;
case Calendar.MONDAY:
// Current day is Monday
break;
case Calendar.TUESDAY:
// etc.
break;
}

为了获得更好的日期时间处理,可以考虑使用 Java8时间 API:

String day = LocalDate.now().getDayOfWeek().name()

要在 Android SDK 26下面使用这个命令,需要在 build.gradle 中启用 Java8 desugaring:

android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled true
}


compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}


dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
}

更多关于 Android 的 Java8支持的信息: https://developer.android.com/studio/write/java8-support

Calendar.getInstance().get(Calendar.DAY_OF_WEEK)

或者

new GregorianCalendar().get(Calendar.DAY_OF_WEEK);

和 Java 一样,Android 没有什么特别之处。

由于 格里高利日历类中的 每周一天是一个静态字段,您可以直接访问它 如下

星期 = GregorianCalender.DAY _ OF _ WEEK;

public String weekdays[] = new      DateFormatSymbols(Locale.ITALIAN).getWeekdays();
Calendar c = Calendar.getInstance();
Date date = new Date();
c.setTime(date);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
System.out.println(weekdays[dayOfWeek]);
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
// 3 letter name form of the day
System.out.println(new SimpleDateFormat("EE", Locale.ENGLISH).format(date.getTime()));
// full name form of the day
System.out.println(new SimpleDateFormat("EEEE", Locale.ENGLISH).format(date.getTime()));

结果(今日) :

Sat
Saturday

更新: Java8

LocalDate date = LocalDate.now();
DayOfWeek dow = date.getDayOfWeek();
System.out.println("Enum = " + dow);


String dayName = dow.getDisplayName(TextStyle.FULL, Locale.ENGLISH);
System.out.println("FULL = " + dayName);


dayName = dow.getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH);
System.out.println("FULL_STANDALONE = " + dayName);


dayName = dow.getDisplayName(TextStyle.NARROW, Locale.ENGLISH);
System.out.println("NARROW = " + dayName);


dayName = dow.getDisplayName(TextStyle.NARROW_STANDALONE, Locale.ENGLISH);
System.out.println("NARROW_STANDALONE = " + dayName);


dayName = dow.getDisplayName(TextStyle.SHORT, Locale.ENGLISH);
System.out.println("SHORT = " + dayName);


dayName = dow.getDisplayName(TextStyle.SHORT_STANDALONE, Locale.ENGLISH);
System.out.println("SHORT_STANDALONE = " + dayName);

结果(今日) :

Enum = SATURDAY
FULL = Saturday
FULL_STANDALONE = Saturday
NARROW = S
NARROW_STANDALONE = 6
SHORT = Sat
SHORT_STANDALONE = Sat

如果您根本不想使用 Calendar 类,可以使用

String weekday_name = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(System.currentTimeMillis());

也就是说,结果是,

"Sunday"

如果你不能坚持七天,使用这两种方法你会发现很容易 您使用(currentdaynumber + 7-1)% 7,(currentdaynumber + 7-2)% 7... ... 直到6

public static String getDayName(int day){
switch(day){
case 0:
return "Sunday";
case 1:
return "Monday";
case 2:
return "Tuesday";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return  "Friday";
case 6:
return "Saturday";
}


return "Worng Day";
}
public static String getCurrentDay(){
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE", Locale.US);
Calendar calendar = Calendar.getInstance();
return dayFormat.format(calendar.getTime());


}

下面是我得到当前日期的简单方法

public String getCurrentDay(){


String daysArray[] = {"Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday", "Saturday"};


Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);


return daysArray[day];


}

Java8datetimeAPI使其变得更加简单:

LocalDate.now().getDayOfWeek().name()

将返回您的名称为 String的一天

产出: 星期四

你可以使用 Kotlin 的代码,你将使用日历类从 java 到 Kotlin

    val day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)


fun dayOfWeek() {
println("What day is it today?")
val day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)
println( when (day) {
1 -> "Sunday"
2 -> "Monday"
3 -> "Tuesday"
4 -> "Wednesday"
5 -> "Thursday"
6 -> "Friday"
7 -> "Saturday"
else -> "Time has stopped"
})
}

如果你不想在 Android 上做这件事,考虑一下哪一天不是所有的设备都会在当地时间标记他们的日历是很有帮助的。

由 Java 8开始:

LocalDate.now(ZoneId.of("America/Detroit")).getDayOfWeek()

如果要在 strings.xml中定义日期字符串,可以执行以下操作。
Calendar.DAY_OF_WEEK返回值来自 1 -> 7 < = > Calendar.SUNDAY -> Calendar.SATURDAY

Xml

<string-array name="title_day_of_week">
<item>日</item> <!-- sunday -->
<item>月</item> <!-- monday -->
<item>火</item>
<item>水</item>
<item>木</item>
<item>金</item>
<item>土</item> <!-- saturday -->
</string-array>

DateExtension.kt

fun String.getDayOfWeek(context: Context, format: String): String {
val date = SimpleDateFormat(format, Locale.getDefault()).parse(this)
return date?.getDayOfWeek(context) ?: "unknown"
}


fun Date.getDayOfWeek(context: Context): String {
val c = Calendar.getInstance().apply { time = this@getDayOfWeek }
return context.resources.getStringArray(R.array.title_day_of_week)[c[Calendar.DAY_OF_WEEK] - 1]
}

吸毒

// get current day
val currentDay = Date().getDayOfWeek(context)


// get specific day
val dayString = "2021-1-4"
val day = dayString.getDayOfWeek(context, "yyyy-MM-dd")