我想得到我传递给建设者的城市时间。如何使用时区从中获取时间,并将该时间值保存在城市类中的字符串变量time中。
package com.example.worldclocktest;
import java.io.Serializable;
import java.sql.Time;
import java.util.TimeZone;
import java.util.UUID;
public class City implements Serializable {
private String id;
private String name;
private boolean important;
private String time;
public City(String name){
init();
this.name = name;
this.important = false;
this.time = TimeZone.getTimeZone(name);
}
private void init() {
this.id = UUID.randomUUID().toString();
}
public String getName() {
return name;
}
public void setImportant(boolean val) {
this.important = val;
}
public boolean isImportant() {
return this.important;
}
public String getTime()
{
return time;
}
}
2条答案
按热度按时间cpjpxq1n1#
时区缩写与城市名称不直接匹配。请参阅tz数据库时区列表。因此,将时区与城市名称分开表示可能是明智的。
时区表示一组规则,用于确定与utc(偏移量为+00:00)的偏移量(通常以小时为单位)。由于夏时制(夏令时/冬令时),偏移量可能会随时间变化。夏时制规则也可以随着年份的变化而变化,因此您不能对某个时区在任何给定时间的偏移量进行假设。幸运的是,jvm可以为我们做到这一点:
输出:
如果提供无法识别的时区名称,则会引发异常:
输出:
laawzig22#
如果要获取当前时间,可以使用以下结构:
//对于时间,可以使用datetimeformatter,例如iso\u local\u time:this.time=zdt.format(datetimeformatter.iso\u local\u time)//结果:21:54:35.785
重要事项:时区字符串值(示例中的城市名称)必须包含一个预定义值(区域/预定义城市名称)