我需要获取尼泊尔的语言环境时间,但无法通过。如何获取尼泊尔的语言环境时间(格林尼治标准时间+5:45)?我该如何解决?如何根据当地时间更改语言环境,英语?这里的日期是英文标准。
Date d = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.ENGLISH).parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
String timeName = new SimpleDateFormat("hh:mm a").format(cal.getTime());
return timeName;
答案 0 :(得分:1)
尼泊尔时间使用的时区ID为Asia/Kathmandu
。时区ID的格式通常为 region / city ,其中city是时区中人口最多的区域(不一定是首都;例如,北京使用的时间为Asia/Shanghai
,并且在德里是Asia/Kolkata
)。
您从ZoneId.getAvailableZoneIds()
获得了一组受支持的时区ID。 "Asia/Kathmandu"
是返回集合的成员。
区域设置和时区是不同且无关的概念(即使每个概念通常与某个地理区域相关联,但并不总是如此)。语言环境与语言和文化有关,而不与时间有关。
例如,要将英国(英格兰,北爱尔兰,威尔士和苏格兰)的2018-10-08 20:42:53
时间转换为尼泊尔时间:
DateTimeFormatter fromFormatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
ZoneId fromZone = ZoneId.of("Europe/London");
DateTimeFormatter toTimeFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)
.withLocale(Locale.US);
ZoneId toZone = ZoneId.of("Asia/Kathmandu");
String englishDateTime = "2018-10-08 20:42:53";
ZonedDateTime dateTimeInEngland = LocalDateTime
.parse(englishDateTime, fromFormatter)
.atZone(fromZone);
LocalTime timeInNepal = dateTimeInEngland.withZoneSameInstant(toZone)
.toLocalTime();
System.out.println(timeInNepal.format(toTimeFormatter));
输出为:
1:27 AM
我正在使用java.time(现代Java日期和时间API)。与您在问题中使用的过时的日期和时间类Date
,SimpleDateFormat
和Calendar
相比,我更喜欢它。
java.time
吗?是的,java.time
在Android设备上运行良好。它只需要至少 Java 6 。
org.threeten.bp
和子包中导入日期和时间类。java.time
。