[java] Android : 사용자의 언어로 현재 요일 (월요일 등)을 가져 오는 방법은 무엇입니까?

사용자의 현지 언어로 현재 요일 (월요일, 화요일 …)이 무엇인지 알고 싶습니다. 예 : 사용자가 프랑스어 인 경우 “Lundi” “Mardi”등.

이 게시물을 읽었지만 사용자 언어로 된 날짜가 아닌 문자열이 아닌 int 만 반환합니다. Android에서 현재 요일을 얻는 가장 쉬운 방법은 무엇입니까?

더 일반적으로, 사용자의 언어로 작성된 모든 요일과 모든 달을 어떻게 얻을 수 있습니까?

예를 들어 Google 의제가 사용자의 현지 언어로 작성된 날짜와 월을 제공하므로 이것이 가능하다고 생각합니다.

감사 !!



답변

SimpleDateFormat 을 사용 하여 사용자 로캘과 관련하여 날짜와 시간을 사람이 읽을 수있는 문자열로 형식화합니다.

현재 요일을 가져 오는 작은 예 (예 : “월요일”) :

SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);


답변

이 시도:

int dayOfWeek = date.get(Calendar.DAY_OF_WEEK);
String weekday = new DateFormatSymbols().getShortWeekdays()[dayOfWeek];


답변

난 이미 대답을 알고 있지만, 사람을 찾고 ‘금’ 과 같이

금-

SimpleDateFormat sdf = new SimpleDateFormat("EEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);

전체 날짜 문자열을 원하는 사람은 금요일에 4E 를 사용할 수 있습니다.

금요일

SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);

즐겨…


답변

짧게 만들려면 다음을 사용할 수 있습니다.

android.text.format.DateFormat.format("EEEE", date);

요일을 문자열로 반환합니다.


답변

그녀는 내가 요일 이름을 얻는 데 사용한 것입니다 ( 0-6의미 monday - sunday).

public static String getFullDayName(int day) {
    Calendar c = Calendar.getInstance();
    // date doesn't matter - it has to be a Monday
    // I new that first August 2011 is one ;-)
    c.set(2011, 7, 1, 0, 0, 0);
    c.add(Calendar.DAY_OF_MONTH, day);
    return String.format("%tA", c);
}

public static String getShortDayName(int day) {
    Calendar c = Calendar.getInstance();
    c.set(2011, 7, 1, 0, 0, 0);
    c.add(Calendar.DAY_OF_MONTH, day);
    return String.format("%ta", c);
}


답변

tl; dr

String output =
    LocalDate.now( ZoneId.of( "America/Montreal" ) )
             .getDayOfWeek()
             .getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

java.time

Java 8 이상에 빌드되고 Java 6 및 7Android백 포팅 된 java.time 클래스 에는 편리한 DayOfWeek열거 형이 포함되어 있습니다.

요일은 표준 ISO 8601 정의에 따라 번호가 지정되며 월요일-일요일은 1-7입니다.

DayOfWeek dow = DayOfWeek.of( 1 );

이 열거 형에는 getDisplayName현지화 된 오늘의 번역 된 이름의 문자열을 생성하는 메서드가 포함되어 있습니다.

Locale객체는 번역에 사용되는 인간의 언어를 지정하고, 지정 문화적 규범은 대문자와 문장 부호 등의 문제를 결정합니다.

String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

오늘 날짜를 확인하려면 LocalDate수업을 사용하세요 . 날짜가 전 세계에 따라 다르기 때문에 시간대는 매우 중요합니다.

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
DayOfWeek dow = today.getDayOfWeek();
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;

로케일은 시간대와 관련이 없습니다. 두 가지 별개의 직교 문제가 있습니다. 인도 ( Asia/Kolkata) 에있는 날짜-시간의 프랑스어 프레젠테이션을 원할 수 있습니다 .

Joda-Time

업데이트 : 현재 유지 보수 모드Joda-Time 프로젝트 는 java.time 클래스 로의 마이그레이션을 권장 합니다.

Joda 타임 라이브러리를 제공합니다 Locale날짜 – 시간 값의 구동 형 현지화.

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone );

Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern( "EEEE" ).withLocale( locale );

String output = formatterUnJourQuébécois.print( now );

System.out.println("output: " + output );

출력 : samedi


java.time 정보

java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 – 시간의 수업을 java.util.Date, Calendar, SimpleDateFormat.

Joda 타임 프로젝트는 지금에 유지 관리 모드 의로 마이그레이션을 조언 java.time의 클래스.

자세한 내용은 Oracle Tutorial을 참조하십시오 . 그리고 많은 예제와 설명을 위해 Stack Overflow를 검색하십시오. 사양은 JSR 310 입니다.

java.time 클래스는 어디서 구할 수 있습니까?


답변

이 시도…

//global declaration
private TextView timeUpdate;
Calendar calendar;

.......

timeUpdate = (TextView) findViewById(R.id.timeUpdate); //initialize in onCreate()

.......

//in onStart()
calendar = Calendar.getInstance();
//date format is:  "Date-Month-Year Hour:Minutes am/pm"
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm a"); //Date and time
String currentDate = sdf.format(calendar.getTime());

//Day of Name in full form like,"Saturday", or if you need the first three characters you have to put "EEE" in the date format and your result will be "Sat".
SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE");
Date date = new Date();
String dayName = sdf_.format(date);
timeUpdate.setText("" + dayName + " " + currentDate + "");

결과는 …
여기에 이미지 설명 입력

행복한 코딩 …..