Android:共有設定の日付を文字列として保存しています。
Date now = new Date(new Date().getTime());
savePreferences(key, "" + now);
文字列から日付形式を取得したいのですが、どうすればよいですか?
この機能を試してください。
public static Date convertStringToDate(String startDate) throws ParseException
{
String myFormatString = // Your stored date format like "dd-mm-yyyy"
SimpleDateFormat df = new SimpleDateFormat(myFormatString);
Date startingDate = df.parse(startDate);
return startingDate;
}
ミリ秒を日付に変換します。
long yourmilliseconds = 1119193190;
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm");
Date resultdate = new Date(yourmilliseconds);
System.out.println(sdf.format(resultdate));
java.util.Date
非推奨のを使用していると思います。代わりにGregorianCalendarを使用してから、を使用して長く保存する必要がありますgetTimeInMillis()
。
これにより、作業がはるかに簡単になります。:-)
toString
Dateインスタンスでメソッドを暗黙的に呼び出しています。残念ながら、そのクラスは文字列のレンダリングに不適切な形式を使用しています。大きな問題の1つは、標準化されておらず、一意でもない3文字のタイムゾーンコードの使用です(ESTやISTなどの重複があります)。その出力は避ける必要があります。
実際、すべてのjava.util.Date/Calendarクラスは避ける必要があります。代わりに、 Joda -TimeまたはJava8の新しいjava.time。*クラスを使用してください。
また、他の回答では、エポックからのミリ秒数を書き込むことを提案しています。あなたはそうすることができますが、それは曖昧です。何の時代?Unixエポックは一般的であり、実際にjava.util.DateとJoda-Timeの両方で使用されていますが、複数あります。その数は何時間単位ですか?古いUnixスタイルは秒数を格納するものでしたが、java.util.DateとJoda-Timeはミリ秒を使用し、新しいJava 8java.time*クラスはナノ秒を使用します。
明確な方法は、文字列をISO 8601形式で、できればUTC(タイムゾーンオフセットなし)で保存することです。次に、実行時のユーザーインターフェイスで、必要に応じて他の形式や他のタイムゾーンに変換します。
String string = new DateTime( DateTimeZone.UTC ).toString();
取得するには…</p>
string: 2013-12-27T07:15:00.395Z