我的意思是这个。假设我有一个日期对象,即2018年5月1日,上午12:00。我想创建一个ZonedDateTime
对象,即2018年5月1日,凌晨12:00,但是另一个时区(比如EST)。因为如果我将该日期对象传入ZonedDateTime
,它会将该日期对象视为UTC(因此它将其视为2018年5月1日格林尼治标准时间上午12:00),我希望它保留该日期字段值但更改到美国东部时间的timzeone(2018年5月1日,美国东部时间上午12:00)。有没有办法在Java中做到这一点?
答案 0 :(得分:0)
您需要的是int counter = 1; // global
class Fetchdata extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
}
@Override
protected Void doInBackground(Void... voids) {
try {
switch (counter) {
case 1:
method1();
break;
case 2:
method2();
break;
case 3:
method3();
break;
case 4:
method4();
break;
case 5:
method5();
break;
default:
cancel(true);
counter = 1;
break;
}
} catch (Throwable e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
counter+=1;
Log.d(TAG, "onPostExecute: "+counter);
// cancel(true);
new Fetchdata().execute();
}
}
void method1(){
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d(TAG, "methode1: coucou");
}
void method2(){
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d(TAG, "methode2: ");
}
void method3(){
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d(TAG, "methode3: ");
}
void method4(){
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d(TAG, "methode4: ");
}
void method5(){
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d(TAG, "methode5: ");
}
:
sudo systemctl enable yourcelery.service
这将在所有时区中被理解,并且永远不会是5月1日以外的任何其他内容。LocalDate
中此类和其他类名称中的“本地”表示“没有时区”。
如果您坚持使用 LocalDate date = LocalDate.of(2018, Month.MAY, 1);
,则答案为java.time
:
ZonedDateTime
输出:
2018-05-01T00:00 + 10:00 [澳大利亚/布里斯班]
不要依赖EST或其他三和四个字母的时区缩写。例如,EST是模糊的(在北美和澳大利亚使用)并且不是时区(使用不到一年的一半)。而是给予地区/城市,例如America / Atikokan。
如果通过“日期对象”表示过时的withZoneSameLocal
类的对象(如果可以的话,请避开它们,而不是 ZonedDateTime zdt = date.atStartOfDay(ZoneOffset.UTC);
ZonedDateTime inEst = zdt.withZoneSameLocal(ZoneId.of("Australia/Brisbane"));
System.out.println(inEst);
中的现代类):
java.util.Date
输出:
2018年5月1日