2010-06-14 02: 21: 49 + 0400 lub 2010-06-14 02: 21: 49-0400Pierwsze lokalna strefa czasowa urządzenia
czy istnieje sposób przekonwertować ten ciąg do daty stosownie do lokalna strefa czasowa maszyna w formacie 2010-06-14 02:21
2010-06-14 02: 21: 49 + 0400 lub 2010-06-14 02: 21: 49-0400Pierwsze lokalna strefa czasowa urządzenia
czy istnieje sposób przekonwertować ten ciąg do daty stosownie do lokalna strefa czasowa maszyna w formacie 2010-06-14 02:21
Dodając do tego, co @ org.life.java i @Erica powiedział, oto co powinieneś do
String dateStr = "2010-06-14 02:21:49-0400";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
TimeZone tz = TimeZone.getDefault();
sdf.setTimeZone(tz);
Date date = sdf.parse(dateStr);
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String newDateStr = sdf.format(date);
System.out.println(newDateStr);
Następnie nowy ciąg znaków sformatowany w formacie daty.
UPDATE @xydev, przykład dałem Ci działa, zobacz pełny kod źródłowy poniżej:
/**
*
*/
package testcases;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
* @author The Elite Gentleman
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String dateStr = "2010-06-14 02:21:49-0400";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
TimeZone tz = TimeZone.getDefault();
sdf.setTimeZone(tz);
Date date = sdf.parse(dateStr);
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a");
String newDateStr = sdf.format(date);
System.out.println(newDateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
wyjściowa: 2010-06-14 08:21:49 AM
Otrzymuję tę wartość dla "Data daty" Mon Cze 14 11:51:49 GMT + 00: 00 2010 .... i awarie aplikacji po osiągnięciu kroku " String newDateStr = sdf.format (data); " – xydev
@xydev ... moje działa jak urok ... zobacz mój pełny kod ... –
dzięki .. mam to ... błąd został spowodowany przez ten kod \t \t \t // String dateStr =" 2010 -06-14 02: 21: 49-0400 "; // \t \t \t SimpleDateFormat SDF = nowy SimpleDateFormat (" rrrr mM-dd HH: mM: SSZ "); // \t \t \t Strefa czasowa TZ = strefę czasową. getDefault(); // \t \t \t sdf.setTimeZone (tz) // \t \t \t data = "2010-06-14 02: 21: 49-0400"; // // \t \t \t try {// \t \t \t \t dat = sdf.parse (data); // \t \t \t} zaczep (ParseException e) { // \t \t \t \t // Do zrobienia Automatycznie generowane catch // \t \t \t \t w.printStackTrace(); // \t \t \t} – xydev
Korzystanie SimpleDateFormat
String string1 = "2010-06-14 02:21:49-0400";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ")
sdf.setTimeZone(tz);
Date date = sdf.parse(string1);
Uwaga: nie jestem pewien, ta sama klasa jest dostępna w Andriod.
Możesz wykonywać różnego rodzaju wymyślne formatowanie i lokalizację dat za pomocą klasy DateFormat. Na początku strony interfejsu API znajduje się bardzo dobra, kompletna dokumentacja: http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html
Większość zwykłych przypadków może być obsługiwana za pomocą wbudowanego obiektu SimpleDateFormat. Jej szczegóły są tutaj: http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html
wzorzec wyjściowy ciąg SimpleDateFormat dla przykładu masz powyżej byłoby:
yyyy-MM-dd hh:mm a
'a' jest znacznikiem AM/PM, nie pobiera Strefa czasowa. –
@ The-Elite-Gentlemen, tak, to był format wyjściowego łańcucha, którego zażądał xydev; "2010-06-14 02:21 AM". :) – Erica
Uważaj, jeśli są uruchomione na emulator Twoja strefa czasowa to zawsze GMT. Właśnie spędziłem 2 godziny, próbując zrozumieć, dlaczego moja aplikacja nie daje mi odpowiedniego czasu (ten, który wyświetla mój komputer), dopóki nie zdałam sobie sprawy, że to z powodu emulatora.
Aby sprawdzić używasz na zastosowaniu emulatora
if (Build.PRODUCT.contains("sdk")){
// your code here for example if curtime has the emulator time
// since midnight in milliseconds then
curtime += 2 * 60 * 60 * 1000; // to add 2 hours from GMT
}
możliwe duplikat [Datownik według strefy czasowej urządzenia] (http://stackoverflow.com/questions/4312220/display-date- zgodnie ze strefą czasową urządzenia) –
Właśnie odpowiedziałem na to pytanie niedawno. –