stworzyłem 2 metody, które jest wystarczająco elastyczne, aby obsłużyć dowolną datę Formatuj w dowolnej strefie czasowej.
Pierwsza metoda jest od daty String do Millis (Epoch)
//dateString to long
private static long formatterDateToMillis(String dateString, String format, String timeZone){
//define Timezone, in your case you hardcoded "PST8PDT" for PST
DateTimeZone yourTimeZone = DateTimeZone.forID(timeZone);
//define your pattern
DateTimeFormatter customFormat = DateTimeFormat.forPattern(format).withZone(yourTimeZone);
//parse dateString to the format you wanted
DateTime dateTime = customFormat.parseDateTime(dateString);
//return in Millis, usually in epoch
return dateTime.getMillis();
}
Druga metoda jest od Millis to Date String
//dateInMillis to date format yyyy-MM-dd
private static String formatterMillistoDate(long dateInMillis, String format, String timeZone){
//define your format
DateTimeFormatter customFormat = DateTimeFormat.forPattern(format);
//convert to DateTime with your desired TimeZone
DateTime dateTime = new DateTime(dateInMillis, DateTimeZone.forID(timeZone));
//return date String in format you defined
return customFormat.print(dateTime);
}
Spróbuj wejść na główną metodę swojej():
long valueInMillis = formatterDateToMillis("2015-03-17","yyyy-MM-dd","PST8PDT");
System.out.println(valueInMillis);
String formattedInDate = formatterMillistoDate(1426575600000L,"yyyy-MM-dd","PST8PDT");
System.out.println(formattedInDate);
Powinieneś otrzymać następujące dane wyjściowe:
2015-03-17
Nadzieja to pomaga! ;)
Powinieneś użyć "America/Los_Angeles" zamiast "PST" lub "PST8PDT", ponieważ Joda-Time zdecydowanie preferuje pierwszy format. Nazwy stref czasowych i ich skróty często nie są unikalne. PST może również oznaczać Pakistan Standard Time, a Joda-Time ma duże problemy z analizowaniem takich skrótów. –