別の形式に変換String
したいDate
。
例えば、
私はユーザーから取得しています、
String fromDate = "19/05/2009"; // i.e. (dd/MM/yyyy) format
これfromDate
を"yyyy-MM-dd"
フォーマットの日付オブジェクトとして変換したい
これどうやってするの?
別の形式に変換String
したいDate
。
例えば、
私はユーザーから取得しています、
String fromDate = "19/05/2009"; // i.e. (dd/MM/yyyy) format
これfromDate
を"yyyy-MM-dd"
フォーマットの日付オブジェクトとして変換したい
これどうやってするの?
回答:
を見てくださいSimpleDateFormat
。コードは次のようになります。
SimpleDateFormat fromUser = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
String reformattedStr = myFormat.format(fromUser.parse(inputString));
} catch (ParseException e) {
e.printStackTrace();
}
Date
ますか?
parse
てくださいformat
。parse
文字列を日付に解析します。
parse
、私はになりますdate format
ようにFri Jan 06 00:01:00 EST 2012
、それはで必要な2012-01-06
日付フォーマット
System.out.println(anyDateObject)
、デフォルトのtoString()メソッドが呼び出されたときに、その形式で出力すると言われているためですFri Jan 06 00:01:00 EST 2012
。あなたはあなたのニーズに合わせてそれをオーバーライドする必要があります。
java.util.Date
、java.util.Calendar
とjava.text.SimpleDateFormat
今のレガシーに取って代わられ、java.timeの Javaの8&9のJavaを参照してくださいに組み込まれたクラスのチュートリアル Oracleで。
LocalDate.parse(
"19/05/2009" ,
DateTimeFormatter.ofPattern( "dd/MM/uuuu" )
)
他との回答java.util.Date
、java.sql.Date
とSimpleDateFormat
今時代遅れされています。
LocalDate
日付/時刻を行う最新の方法は、具体的にはjava.timeクラスを使用することLocalDate
です。LocalDate
クラスは、時間日の時間帯なしなし日付専用の値を表しています。
DateTimeFormatter
日時値を表す文字列を解析または生成するには、DateTimeFormatter
クラスを使用します。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
LocalDate ld = LocalDate.parse( "19/05/2009" , f );
日付時刻オブジェクトをその値を表す文字列と混同しないでください。日時オブジェクトにはフォーマットがありませんが、ストリングにはあります。などの日時オブジェクトは、内部値を表す文字列を生成LocalDate
できますが、日時オブジェクトと文字列は別個の別個のオブジェクトです。
文字列を生成するために任意のカスタム形式を指定できます。または、java.timeに自動的にローカライズする作業をさせます。
DateTimeFormatter f =
DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH ) ;
String output = ld.format( f );
コンソールにダンプします。
System.out.println( "ld: " + ld + " | output: " + output );
ld:2009-05-19 | 出力:mardi 19 mai 2009
java.timeのフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスをjava.util.Date
、Calendar
、& SimpleDateFormat
。
ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。
詳細については、Oracleチュートリアルを参照してください。また、スタックオーバーフローで多くの例と説明を検索してください。仕様はJSR 310です。
java.timeオブジェクトをデータベースと直接交換できます。JDBC 4.2以降に準拠したJDBCドライバーを使用します。文字列もクラスも必要ありません。java.sql.*
java.timeクラスはどこで入手できますか?
ThreeTen-エクストラプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、java.timeに将来追加される可能性があることを証明する場です。あなたはここにいくつかの有用なクラスのような見つけることがInterval
、YearWeek
、YearQuarter
、および多くを。
SimpleDateFormat
クラスを使用します。
private Date parseDate(String date, String format) throws ParseException
{
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.parse(date);
}
使用法:
Date date = parseDate("19/05/2009", "dd/MM/yyyy");
効率を上げるために、フォーマッタをハッシュマップに保存することをお勧めします。ハッシュマップは、utilクラスの静的メンバーです。
private static Map<String, SimpleDateFormat> hashFormatters = new HashMap<String, SimpleDateFormat>();
public static Date parseDate(String date, String format) throws ParseException
{
SimpleDateFormat formatter = hashFormatters.get(format);
if (formatter == null)
{
formatter = new SimpleDateFormat(format);
hashFormatters.put(format, formatter);
}
return formatter.parse(date);
}
java.text.SimpleDateFormat
それはあなたが必要とするすべてを説明するそれのためのjavadocsを確認してください。
一方でSimpleDateFormat
、実際のニーズのための作業、さらにあなたがチェックアウトする場合がありますジョダ時間、私は多くのそれを使用していないものの、明らかJavaの7のやり直し日ライブラリーの基礎である、私は何もなく、良いものを聞いたことがないしましたそれについてそしてあなたのプロジェクトで広範囲に日付を操作するなら、それはおそらく調べる価値があります。
Date
オブジェクトが持っていないいかなる形式をそれが表現です、。日付は、任意String
の形式で表示できます。
たとえば「yyyy-MM-dd
」、「yy-MMM-dd
」、「dd-MMM-yy
」など
これを達成するために、あなたはの使用を得ることができます SimpleDateFormat
これを試して、
String inputString = "19/05/2009"; // i.e. (dd/MM/yyyy) format
SimpleDateFormat fromUser = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date dateFromUser = fromUser.parse(inputString); // Parse it to the exisitng date pattern and return Date type
String dateMyFormat = myFormat.format(dateFromUser); // format it to the date pattern you prefer
System.out.println(dateMyFormat); // outputs : 2009-05-19
} catch (ParseException e) {
e.printStackTrace();
}
この出力:2009-05-19
次のような文字列があるとします。
String mDate="2019-09-17T10:56:07.827088"
ここString
で、JavaとKotlinでこの形式を個別の日付と時刻に変更します。
JAVA:
抽出日付のメソッドがあります:
public String getDate() {
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US);
Date date = dateFormat.parse(mDate);
dateFormat = new SimpleDateFormat("MM/dd/yyyy", Locale.US);
return dateFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
Return
これは:09/17/2019
そして、抽出時間の方法があります:
public String getTime() {
try {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US);
Date date = dateFormat.parse(mCreatedAt);
dateFormat = new SimpleDateFormat("h:mm a", Locale.US);
return dateFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
Return
これは: 10 : 56 AM
コトリン:
抽出日付の関数があります:
fun getDate(): String? {
var dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US)
val date = dateFormat.parse(mDate!!)
dateFormat = SimpleDateFormat("MM/dd/yyyy", Locale.US)
return dateFormat.format(date!!)
}
Return
これは:09/17/2019
そして、抽出時間の方法があります:
fun getTime(): String {
var dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US)
val time = dateFormat.parse(mDate!!)
dateFormat = SimpleDateFormat("h:mm a", Locale.US)
return dateFormat.format(time!!)
}
Return
これは: 10 : 56 AM
SimpleDateFormat
授業を教えないでください。少なくとも最初のオプションではありません。予約なしではありません。今日、私たちはjava.time
、最新のJava日時APIとそのを非常によく利用していますDateTimeFormatter
。またSimpleDateFormat
、秒(マイクロ秒)の小数点以下6桁を正しく解析できません。
10:56 AM
と、11:09 AM
期待どおりに表示されませんが、代わりに(Oracle jdk-11.0.3でテストされています)。
DateTimeFormatter
するためにminsdk 26
それ以上にする必要がある
10:56 AM