我无法获取当前的印度时间。
我想获取印度的当前时间,所以我会在5分钟后更新当前时间,然后更新当前时间,因此我的系统时钟比印度实际时间早5分钟运行,但是我想获取印度的标准时间。
current time is 11:05:06 and machine time is 11:10:06
public class TestDate {
public static void main(String[] args) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
Date date = new Date();
sd.setTimeZone(TimeZone.getTimeZone("IST"));
System.out.println(sd.format(date));
}
}
output : 2019.02.12 AD at 11:10:06 IST
expected : 2019.02.12 AD at 11:05:06 IST
但是我的输出错误,所以请提出建议
答案 0 :(得分:2)
Java 8中新的类似Date
的API已取代JodaTime
API。
使用ZonedDateTime
对象。
final ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Asia/Kolkata"));
这将为您提供输出2019-02-11T14:49:28.625+05:30[Asia/Kolkata]
要格式化Temporal
,请使用DateTimeFormatter
。
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
.format(now);
答案 1 :(得分:0)
UTC+05:30
这不是时区,只是一个偏移量。您需要使用有效的时区才能打印该时区中的日期,例如:Asia/Kolkata
。
以下应该有效:
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
SimpleDateFormat gmtDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
gmtDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
//Current Date Time in GMT
System.out.println("Current Date and Time in UTC time zone: " + gmtDateFormat.format(new Date()));
}
此外,Asia/Kolkata
时区并不总是UTC+05:30
,这取决于夏令时。因此,我们宁可按名称使用时区,也不要使用offset。