在Java Gregorian Calendar中设置区域设置

时间:2018-06-17 10:41:16

标签: java compiler-errors gregorian-calendar

Java API是指IANA语言子标记注册表(在区域下)以查找国家/地区代码。在IANA websiste中,英国的地区代码为GB。但是,使用GB设置GregorianCalendar对象:

import java.util.*;

class MainClass{
    public static void main (String[] args) {

        GregorianCalendar date1 = new GregorianCalendar(Locale.GB);
        int year = date1.get(GregorianCalendar.YEAR);
        int weekday = date1.get(GregorianCalendar.DAY_OF_WEEK);

        System.out.println(year);
        System.out.println(weekday);
    }
}

导致以下错误消息:

cannot find symbol
symbol:   variable GB
location: class locale

请问我该怎么办?

4 个答案:

答案 0 :(得分:0)

Locale类中的常量是国家/地区名称,而不是国家/地区代码。例如,有Locale.ITALY,但没有Locale.IT。这就是为什么没有Locale.GB

您所说的代码是ISO 3166 alpha-2国家/地区代码。它们仅用作Locale构造函数中的参数。取决于你如何命名这个对象。

答案 1 :(得分:0)

尝试使用Locale.UK来获取编译代码。

答案 2 :(得分:0)

其他答案都是正确的。

java.time

以下是您当前的代码版本:

        LocalDate today = LocalDate.now(ZoneId.of("Europe/London"));
        int year = today.getYear();
        DayOfWeek weekday = today.getDayOfWeek();

        System.out.println(year);
        System.out.println(weekday);

今天(6月17日)的输出是

2018
SUNDAY

到目前为止,您甚至不需要语言环境(但时区至关重要,当然,您可能还想格式化特定语言环境的日期)。

我们将区域设置传递给GregorianCalendar的原因(在我们使用该类的过去)确定了周计划:一周的第一天是周六,周日或周一,具体取决于区域设置。今天,如果您需要特定区域设置的周方案,则应使用WeekFields类及其静态of​(Locale)方法。

GregorianCalendar课程已经过时了。它的设计也很差,所以我建议你不要使用它。

答案 3 :(得分:0)

在下面的函数中,我试图将TimeZone“ Asia / Singapore”设置为以“ yyy-MM-dd”格式发送的日期字符串,您甚至可以将dateString格式作为另一个参数传递,并设置太SimpleDateFormat对象,这是如何在GregorianCalendar中定位时间的完美解决方案。

public static GregorianCalendar getGregorianCalendarFromDateString(String dateString) {
    GregorianCalendar gregCal = null;
    try {
        DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        formatter.setTimeZone(TimeZone.getTimeZone("Asia/Singapore"));
        Date date = formatter.parse(dateString);
        gregCal = new GregorianCalendar();
        gregCal.setTime(date);
        gregCal.setTimeZone(TimeZone.getTimeZone("Asia/Singapore"));
    } catch (DatatypeConfigurationException | ParseException e) {
        LOG.error("getGregorianCalendarFromDateString::"+
                "Caught error while parsing date::"+e.getMessage());
    }
    return gregCal;
}