Android에서 현재 요일을 얻는 가장 쉬운 방법은 무엇입니까?
현재 요일을 안드로이드에서 얻는 가장 쉬운 방법은 무엇일까요?
Java 클래스는 동작합니다.
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;
}
보다 나은 날짜/시간 처리를 위해 Java 8 time API를 사용하는 것을 고려하십시오.
String day = LocalDate.now().getDayOfWeek().name()
Android SDK 26 아래에서 사용하려면 build.gradle에서 Java 8 디스거링을 활성화해야 합니다.
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의 Java 8 지원에 대한 자세한 내용은 https://developer.android.com/studio/write/java8-support를 참조하십시오.
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()));
결과(오늘의 경우):
앉았다토요일에 하려고요.
업데이트: 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.getInstance().get(Calendar.DAY_OF_WEEK)
또는
new GregorianCalendar().get(Calendar.DAY_OF_WEEK);
Java와 마찬가지로 Android에 특별한 것은 없습니다.
자바 8datetime
API
훨씬 더 쉽게 만들었습니다.
LocalDate.now().getDayOfWeek().name()
오늘의 이름을 다음과 같이 반환합니다.String
출력 : 목요일
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]);
캘린더 클래스를 전혀 사용하지 않으려는 경우 이 옵션을 사용할 수 있습니다.
String weekday_name = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(System.currentTimeMillis());
즉, 결과는
"Sunday"
다음은 현재 상태를 파악하기 위한 간단한 접근법입니다.
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];
}
자바에서 코틀린으로 캘린더 클래스를 사용할 코틀린에 사용할 수 있습니다.
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"
})
}
두 가지 방법을 모두 사용하면 (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());
}
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>
Date Extension.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")
요일_OF_로서GregoryCalender 클래스의 WEEK는 풀로 직접 액세스할 수 있는 정적 필드입니다.
int dayOfWeek = 그레고리력.요일_OF_WEK;
언급URL : https://stackoverflow.com/questions/5574673/what-is-the-easiest-way-to-get-the-current-day-of-the-week-in-android
'programing' 카테고리의 다른 글
노드에서 NULL 값을 삽입하는 방법파라미터화된 입력을 사용하여 JS/Javascript to MySQL을 사용합니까? (0) | 2022.09.04 |
---|---|
MySQL 데이터 디렉터리 위치 (0) | 2022.09.04 |
MySQL에서 외부 키 제약 조건을 추가할 수 없음 (0) | 2022.09.04 |
부동 데이터 유형과 10진 데이터 유형의 차이 (0) | 2022.09.04 |
'sorted(list)'와 'list.sort()'의 차이점은 무엇입니까? (0) | 2022.09.04 |