web-dev-qa-db-ja.com

Android:ユーザーの言語で現在の曜日(月曜日など)を取得する方法は?

ユーザーの現地言語での現在の曜日(月曜日、火曜日...)を知りたい。たとえば、ユーザーがフランス語の場合、「Lundi」「Mardi」などです。

私はこの投稿を読んだことがありますが、ユーザーの言語の日を含む文字列ではなく、intのみを返します: Androidで現在の曜日を取得する最も簡単な方法は何ですか?

より一般的には、ユーザーの言語で週のすべての曜日と月をすべて取得するにはどうすればよいですか?

これは可能だと思います。たとえば、Googleの議題では、ユーザーの現地語で書かれた日と月を示しています。

ありがとう!!

67
Regis_AG

SimpleDateFormat を使用して、ユーザーのロケールに応じて日付と時刻を人間が読み取れる文字列にフォーマットします。

現在の曜日を取得する小さな例(例:「月曜日」)

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

これを試して:

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

短くするためにこれを使用できます:

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

曜日を文字列として返します。

15
gswierczynski

私はすでに答えましたが、誰が'Fri'を探しているのか知っています

金のために-

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);

楽しい...

14
CrazyMind

彼女が私が曜日名を取得するために使用したもの(0-6monday - 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);
}
11
Knickedi

tl; dr

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

Java.time

Java 8以降に組み込まれ、 Java 6および7にバックポートされたJava.timeクラス および からAndroidへの移植 便利な DayOfWeek enum.

日は、標準の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 プロジェクトは、現在は メンテナンスモードです は、 Java.time クラスへの移行を推奨しています。

Joda-Time ライブラリは、日時変数の Locale -drivenローカライズを提供します。

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 フレームワークは、Java 8以降に組み込まれています。これらのクラスは、 Java.util.DateCalendar 、& SimpleDateFormat などの厄介な古い legacy date-timeクラスに取って代わります。

Joda-Time プロジェクトは、現在は メンテナンスモードです は、 Java.time クラスへの移行を推奨します。

詳細については、 Oracleチュートリアル を参照してください。また、Stack Overflowで多くの例と説明を検索してください。仕様は JSR 310 です。

Java.timeクラスはどこで入手できますか?

  • Java SE 8 および SE 9 以降
    • ビルトイン。
    • 実装がバンドルされた標準Java AP​​Iの一部。
    • Java 9は、いくつかのマイナーな機能と修正を追加します。
  • Java SE 6 および SE 7
    • Java.time機能の多くは、 ThreeTen-Backport のJava 6および7にバックポートされています。 。
  • Android
5
Basil Bourque

これを試して...

//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 + "");

結果は... enter image description here

ハッピーコーディング.....

返信が遅れて申し訳ありませんが、これは適切に機能します。

daytext=(textview)findviewById(R.id.day);

Calender c=Calender.getInstance();
SimpleDateFormat sd=new SimpleDateFormat("EEEE");
String dayofweek=sd.format(c.getTime());


daytext.setText(dayofweek);
3
Ajinkya
//selected date from calender
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); //Date and time
String currentDate = sdf.format(myCalendar.getTime());

//selcted_day name
SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE");
String dayofweek=sdf_.format(myCalendar.getTime());
current_date.setText(currentDate);
lbl_current_date.setText(dayofweek);

Log.e("dayname", dayofweek);
0
savithri