by Anonymous » 04 Feb 2025, 21:14
Ich habe seit gestern mit Kalender, Timezones und Conversion gespielt. Dieses Ding hat mich alle verwirrt. Hier ist mein Code: < /p>
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
class Dates {
public static void main(String[] args) {
test1();
test2();
}
private static void test1() {
String dateString = "2013-10-06T16:25";
String pattern = "yyyy-MM-dd'T'HH:mm";
SimpleDateFormat dtf = new SimpleDateFormat(pattern);
long mil;
Date date;
try {
date = dtf.parse(dateString);
mil = date.getTime();
System.out.println("Create date:" + date);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(mil);
System.out.println ("millis:"+ mil);
printCal ("Default Cal:", cal);
} catch (ParseException ex) {
Logger.getLogger(Dates.class.getName()).log(Level.SEVERE, null, ex);
}
}
private static void test2() {
// TODO Auto-generated method stub
long ms = 1381091100000L;
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Americas/New_York"));
cal.setTimeInMillis(ms);
printCal ("EST: ", cal);
}
private static void printCal(String str, Calendar cal) {
// TODO Auto-generated method stub
System.out.println(str+"Year:" + cal.get(Calendar.YEAR) + ", Month:"
+ cal.get(Calendar.MONTH) + ", Date:"
+ cal.get(Calendar.DATE) + ", Hour:"
+ cal.get(Calendar.HOUR) + ", Minutes:"
+ cal.get(Calendar.MINUTE) + ", Seconds:"
+ cal.get(Calendar.SECOND) + ", AM_PM: +"+ cal.get(Calendar.AM));
}
< /code>
} < /p>
Die Ausgabe:
Datum erstellen: Sonne Okt 06 16: 25:00 EDT 2013
Millis: 1381091100000
Standard Cal: Jahr: 2013, Monat: 9, Datum: 6, Stunde: 4, Minuten: 25, Sekunden: 0 , Am_pm: +1
est: Jahr: 2013, Monat: 9, Datum: 6, Stunde: 8, Minuten: 25, Sekunden: 0, am_pm: +1
< /p >
Wie Sie sehen, verwende ich dieselbe Millis in Test2 (), die ich aus dem Test1 () bekomme. Die Stunde in Test 1 ist der erwartete 4, während es in test2 ist 8! Was verursacht dieses Problem?
Thanks.
Ich habe seit gestern mit Kalender, Timezones und Conversion gespielt. Dieses Ding hat mich alle verwirrt. Hier ist mein Code: < /p>
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
class Dates {
public static void main(String[] args) {
test1();
test2();
}
private static void test1() {
String dateString = "2013-10-06T16:25";
String pattern = "yyyy-MM-dd'T'HH:mm";
SimpleDateFormat dtf = new SimpleDateFormat(pattern);
long mil;
Date date;
try {
date = dtf.parse(dateString);
mil = date.getTime();
System.out.println("Create date:" + date);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(mil);
System.out.println ("millis:"+ mil);
printCal ("Default Cal:", cal);
} catch (ParseException ex) {
Logger.getLogger(Dates.class.getName()).log(Level.SEVERE, null, ex);
}
}
private static void test2() {
// TODO Auto-generated method stub
long ms = 1381091100000L;
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Americas/New_York"));
cal.setTimeInMillis(ms);
printCal ("EST: ", cal);
}
private static void printCal(String str, Calendar cal) {
// TODO Auto-generated method stub
System.out.println(str+"Year:" + cal.get(Calendar.YEAR) + ", Month:"
+ cal.get(Calendar.MONTH) + ", Date:"
+ cal.get(Calendar.DATE) + ", Hour:"
+ cal.get(Calendar.HOUR) + ", Minutes:"
+ cal.get(Calendar.MINUTE) + ", Seconds:"
+ cal.get(Calendar.SECOND) + ", AM_PM: +"+ cal.get(Calendar.AM));
}
< /code>
} < /p>
Die Ausgabe:
Datum erstellen: Sonne Okt 06 16: 25:00 EDT 2013
Millis: 1381091100000
Standard Cal: Jahr: 2013, Monat: 9, Datum: 6, Stunde: 4, Minuten: 25, Sekunden: 0 , Am_pm: +1
est: Jahr: 2013, Monat: 9, Datum: 6, Stunde: 8, Minuten: 25, Sekunden: 0, am_pm: +1
< /p >
Wie Sie sehen, verwende ich dieselbe Millis in Test2 (), die ich aus dem Test1 () bekomme. Die Stunde in Test 1 ist der erwartete 4, während es in test2 ist 8! Was verursacht dieses Problem?
Thanks.