日付を2桁形式で表示できません。日または月が1桁の例の場合:4が04を表示するようにします。そのためのロジックを考えるのに苦労しています。
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH);
if (month % 10 == 0) {
Place = 0 + month;
}
String Dates = year + "-" + Place + "-" + day;
Date.setText((Dates));
DecimalFormat mFormat= new DecimalFormat("00");
mFormat.format(Double.valueOf(year));
あなたの場合:
mFormat.setRoundingMode(RoundingMode.DOWN);
String Dates = mFormat.format(Double.valueOf(year)) + "-" + mFormat.format(Double.valueOf(Place)) + "-" + mFormat.format(Double.valueOf(day));
SimpleDateFormatを使用してください
SimpleDateFormat sd1 = new SimpleDateFormat("dd-MMM-yyyy");
System.out.println("Date : " + sd1.format(new Date(c.getTimeInMillis()));
出力
Date : 18-Apr-2012
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH)+1;
String Dates = year + "-" +(month<10?("0"+month):(month)) + "-" + day;
Date.setText((Dates));
if (dayOfMonth < 10) {
NumberFormat f = new DecimalFormat("00");
Sting date = String.valueOf(f.format(dayOfMonth));
}
LocalDate.now()
.toString()
2016-01-07
希望する/予想されるタイムゾーンを常に明示的に指定することをお勧めします。
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.toString()
現在使用しているJava.util.Calendarクラスはレガシーです。 Java.util.Dateなどと一緒にこのクラスを避けてください。これらは、設計が不十分で、混乱を招き、面倒であることが証明されています。
古い日付時刻クラスは、Java 8以降に組み込まれた Java.time フレームワークに取って代わりました。機能の多くは、 ThreeTen-Backport プロジェクトのJava 6および7にバックポートされ、 ThreeTenABP のAndroidにさらに適合しました。
これらの最新のクラスは、以下に示すように、1行のコードで目標を達成できます。
古い旧式の日付時刻クラスとJava.timeクラスの両方がフォーマット機能を提供します。独自のフォーマットコードを記述する必要はありません。
タイムゾーンは、日付を決定するために重要です。東部では新しい日が早く来るため、日付は時間帯によって世界中で異なります。この問題は、質問およびその他の回答では無視されました。省略すると、JVMの現在のデフォルトのタイムゾーンが暗黙的に適用されます。希望する/予想されるタイムゾーンを明示的に指定する方が適切です。
LocalDate
時刻とタイムゾーンのない日付のみの値の場合は、 LocalDate
を使用します。 LocalDate
内にはタイムゾーンが格納されていませんが、タイムゾーンによって「今日」が決定されます。
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
希望するYYYY-MM-DDの2桁の形式は、日時値のテキスト表現の賢明な形式を定義する ISO 8601 標準に準拠しています。この標準は、文字列の解析/生成のためにJava.timeクラスでデフォルトで使用されます。
String output = today.toString();
それがすべて、3行のコードです。それらを組み合わせることもできます。
String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString();
Java.time フレームワークは、Java 8以降に組み込まれています。これらのクラスは、 Java.util.Date
、 Calendar
、& SimpleDateFormat
などの厄介な古い legacy date-timeクラスに取って代わります。
メンテナンスモード になった Joda-Time プロジェクトは、 Java.time クラスへの移行を推奨しています。
詳細については、 Oracle Tutorial を参照してください。また、Stack Overflowで多くの例と説明を検索してください。指定は JSR 31 です。
Java.timeオブジェクトをデータベースと直接交換できます。 JDBC 4.2 以降に準拠する JDBCドライバー を使用します。文字列もJava.sql.*
クラスも必要ありません。
Java.timeクラスはどこで入手できますか?
ThreeTen-Extra プロジェクトは、追加のクラスでJava.timeを拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある証明の場です。 Interval
、 YearWeek
、 YearQuarter
、および more などの便利なクラスがあります。
if ((month+1)<10){
place = "0"+(String) (month+1)
}
一日も同じことをすればいいのです。
0から始まるため、月に+1。
SimpleDateFormat class。を使用します。これを行う方法はたくさんあります。
このようなもの..
SimpleDateFormat sdfSource = new SimpleDateFormat("dd/MM/yy"); // you can add any format..
Date date = sdfSource.parse(strDate);
Java 8 Timeライブラリ:
String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
SimpleDateFormatクラスを使用できます
String dates = new Java.text.SimpleDateFormat("dd-MM-YYYY").format(new Date())
詳細については https://docs.Oracle.com/javase/6/docs/api/Java/text/SimpleDateFormat.html
string.format()メソッドを使用できます。
例:
String.format("%02d", month);
選択した月が10未満の場合、月の前に「0」が追加されます。
Joda-Time ライブラリ、特に org.joda.time.DateTime
クラス。
DateTime datetime = new DateTime(new Date());
String month = datetime.toString("MM");
結果は2桁になります
たとえば1年必要な場合は、次を使用できます。
String year = datetime.toString("YYYY");
結果は年の4桁になります。