举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > java时间日期 Java 日期时区

java时间日期 Java 日期时区

2023-03-12 17:20 Java教程

java时间日期 Java 日期时区

java时间日期

Java时间日期是Java程序中常用的一种数据类型,它可以表示一个特定的时间点。在Java中,时间日期是由java.util.Date和java.util.Calendar两个类来表示的。

java.util.Date是一个表示特定时间的对象,它可以表示一个毫秒数,即从1970年1月1日00:00:00 GMT开始计时到当前所经历的毫秒数。Date对象可以用来获取当前的年、月、日、小时、分钟、秒和毫秒。

java.util.Calendar是一个抽象基类,它使用get()和set()方法来获取或者修改特定字段的值,例如YEAR字段表示年份,MONTH字段表示月份。Calendar也可以用来格式化或者解析字符串形式的时间。

// 获取当前年份 
int year = Calendar.getInstance().get(Calendar.YEAR); 
// 获取当前月份 
int month = Calendar.getInstance().get(Calendar.MONTH) + 1; 
// 获取当前天数 
int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); 
// 获取小时数 
int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); 
// 获取分钟数 
int minute = Calendar.getInstance().get(Calendar

Java 日期时区

Java日期时区


ZoneOffset 表示与UTC时区偏移的固定区域。

ZoneOffset不跟踪由夏令时导致的区域偏移的更改。

ZoneOffset类声明三个常量:

  • UTC
  • MAX
  • MIN

UTC是UTC的时区偏移常量。

MAX和MIN是最大和最小支持的区域偏移。

Z用作UtC时区的区域偏移指示符。

我们可以用小时,分钟和秒的组合创建 ZoneOffset

import java.time.ZoneOffset;

public class Main {
  public static void main(String[] args) {
    ZoneOffset zoneOffset1  = ZoneOffset.ofHours(-1);
    System.out.println(zoneOffset1);
    ZoneOffset zoneOffset2  = ZoneOffset.ofHoursMinutes(6, 30);
    System.out.println(zoneOffset2);
    ZoneOffset zoneOffset3  = ZoneOffset.ofHoursMinutesSeconds(9, 30,  45); 
    System.out.println(zoneOffset3);
  }
}

上面的代码生成以下结果。


例2

以下代码显示如何从偏移创建区域偏移。

import java.time.ZoneOffset;

public class Main {
  public static void main(String[] args) {
    ZoneOffset zoneOffset1  = ZoneOffset.of("+05:00");
    ZoneOffset zoneOffset2  = ZoneOffset.of("Z"); // Same as ZoneOffset.UTC 
    System.out.println(zoneOffset1);
    System.out.println(zoneOffset2);

  }
}

上面的代码生成以下结果。


例3

以下代码从 ZoneOffset 输出常量值。

import java.time.ZoneOffset;

public class Main {
  public static void main(String[] args) {
    System.out.println("ZoneOffset.UTC: "    + ZoneOffset.UTC); 
    System.out.println("ZoneOffset.MIN: "    + ZoneOffset.MIN); 
    System.out.println("ZoneOffset.MAX: "    + ZoneOffset.MAX);


  }
}

上面的代码生成以下结果。

注意

Java Date-Time API支持以小时,分钟和秒为单位的区域偏移量。

来自ZoneOffset的compareTo()允许我们比较两个区域偏移。

+1:30的区域偏移在+1:00的区域偏移之前。

Java Date-Time API支持-18:00到+18:00之间的区域偏移。

ZoneId

ZoneId 表示区域偏移及其用于更改区域偏移的规则夏令时。

ZoneOffset 表示从UtC时区偏移的固定区域,而 ZoneId 表示可变区偏移。

这些更改是由时区规则定义的。

时区ID

每个时区都有一个ID,可以用三种格式定义:

  • 在区域偏移中,可以是“Z”,“+ hh:mm:ss”或“-hh:mm:ss”,例如“+01:00”。
  • 前缀为“UTC”,“GMT”或“UT”,后跟区域偏移量,例如“UTC + 01:00”。
  • 在区域名称中,例如,“美洲/芝加哥”。

以下代码显示如何使用of()工厂方法创建ZoneId。

import java.time.ZoneId;

public class Main {
  public static void main(String[] args) {
    ZoneId  usChicago   = ZoneId.of("America/Chicago");
    System.out.println(usChicago);
    ZoneId  fixedZoneId = ZoneId.of("+01:00");
    System.out.println(fixedZoneId);
  }
}

上面的代码生成以下结果。

例4

ZoneId 中的 getAvailableZoneIds()返回所有已知时区ID。

import java.time.ZoneId;
import java.util.Set;

public class Main {
  public static void main(String[] args) {
    Set<String> zoneIds = ZoneId.getAvailableZoneIds();
    for  (String  zoneId: zoneIds) { 
      System.out.println(zoneId);
    }
  }
}

上面的代码生成以下结果。

ZoneRules

ZoneRules 跟踪区域偏移如何变化。

下面的代码显示了如何使用 ZoneRules 以获取有关ZoneId的时间偏移和时间更改的信息。

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.zone.ZoneOffsetTransition;
import java.time.zone.ZoneRules;
import java.util.List;

public class Main {
  public static void main(String[] args) {
    LocalDateTime  now = LocalDateTime.now(); 
    ZoneId  usChicago   = ZoneId.of("America/Chicago");
    System.out.println("Zone ID:  "  + usChicago.getId());

    ZoneRules  rules = usChicago.getRules();
    System.out.println("isFixedOffset(): "  + rules.isFixedOffset());
    ZoneOffset offset = rules.getOffset(now); 
    System.out.println("Zone offset: "  + offset);

    List<ZoneOffsetTransition> transitions = rules.getTransitions(); 
    System.out.println(transitions);

  }
}

上面的代码生成以下结果。

阅读全文
以上是名动网为你收集整理的java时间日期 Java 日期时区全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们