如何根据时区设置日历

时间:2018-10-04 12:23:19

标签: android java-calendar

我想根据时区制作日历。我试图通过浏览不同的查询来解决问题,但我不能。现在,它选择移动默认时间。如果有人有想法请帮助我。时区应为英​​国时间。

我尝试过:

{
    Calendar c1;
    c1 = Calendar.getInstance(TimeZone.getTimeZone("UTC"), Locale.UK);
    int hour = c1.get(Calendar.HOUR);
    int minutes = c1.get(Calendar.MINUTE);
    int seconds = c1.get(Calendar.SECOND);
    int day = c1.get(Calendar.DAY_OF_MONTH);
    int month = c1.get(Calendar.MONTH);
    int year = c1.get(Calendar.YEAR);
} 

但是它还会返回系统日期。

2 个答案:

答案 0 :(得分:2)

java.time

    ZonedDateTime nowInUk = ZonedDateTime.now(ZoneId.of("Europe/London"));
    int hour = nowInUk.getHour();
    int minutes = nowInUk.getMinute();
    int seconds = nowInUk.getSecond();
    int day = nowInUk.getDayOfMonth();
    Month month = nowInUk.getMonth();
    int year = nowInUk.getYear();

    System.out.println("hour = " + hour + ", minutes = " + minutes + ", seconds = " + seconds 
            + ", day = " + day + ", month = " + month + ", year = " + year);

当我刚刚运行此代码段时,它打印出来:

  

小时= 3,分钟= 41,秒= 15,日期= 5,月份=十月,年份=   2018

ZonedDateTime在很大程度上取代了过时的Calendar类。

您的代码出了什么问题?

英国时间的时区ID为Europe/London。在您的代码中,您使用了UTC,这是另一回事,至少有时会给您不同的结果。某些年份中的某些时候,英国时间与UTC一致,但今年的这个时候不是。所以您的时间比英国时间早一小时。

c1.get(Calendar.HOUR)还为您提供了从1到12的上午或下午的小时,我想这不是您想要的。

问题:我可以在Android上使用java.time吗?

是的,java.time在Android设备上运行良好。它只需要至少 Java 6

  • 在Java 8和更高版本以及新的Android设备上(有人告诉我API级别为26),新的API是内置的。
  • 在Java 6和7中,获得了ThreeTen反向端口,即新类的反向端口(JSR 310的ThreeTen,首次描述了现代API)。
  • 在(较旧的)Android上,使用ThreeTen Backport的Android版本。叫做ThreeTenABP。确保从包org.threeten.bp和子包中导入日期和时间类。

链接

答案 1 :(得分:0)

使用此方法从时区获取时间,但这是一种条件,必须在设置的时间检查自动时间,否则移至设置的页面。

string username = "xxxxxxxx";
        string apikey = "xxxxxxxxxxxxxxxxxxxxxx";

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls |
                                   SecurityProtocolType.Tls11 |
                                   SecurityProtocolType.Tls12;

        PortTypeClient mservice = new PortTypeClient();
        String mlogin = mservice.login(username, apikey);


        string store_view = "1";
        string new_prod_sku = "TEST010";
        catalogProductCreateEntity new_prod_entity = new catalogProductCreateEntity();
        new_prod_entity.category_ids = new string[] { "2" };
        new_prod_entity.website_ids = new string[] { "0" };
        new_prod_entity.name = "Test 2";
        new_prod_entity.description = "Test 2";
        new_prod_entity.short_description = "Test 2";
        new_prod_entity.weight = "0";
        new_prod_entity.status = "1";
        new_prod_entity.url_key = new_prod_sku;
        new_prod_entity.url_path = new_prod_sku;
        new_prod_entity.visibility = "4";
        new_prod_entity.price = "200";
        new_prod_entity.tax_class_id = "1";
        new_prod_entity.stock_data = new catalogInventoryStockItemUpdateEntity()
        {
            qty = "10",
            is_in_stock = 1
        };

        int create = mservice.catalogProductCreate(mlogin, "simple", "0", new_prod_sku, new_prod_entity, store_view);