在Java语言中,您可以通过java.util.Calendar类取得一个本地时间或者指定时区的时间实例。
java.util.Calendar cal = java.util.Calendar.getInstance();//获取本地时间
//java.util.Calendar cal = java.util.Calendar.getInstance(java.util.Locale.CHINA);//指定时区
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);//获取时间偏移量 int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);//取得夏令时差 cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));//从本地时间扣除时差
//所取得的时间即是UTC标准时间。 System.out.println("UTC:"+new Date(cal.getTimeInMillis()));
SimpleDateFormat 实例,默认情况下,还使用本地时区。
SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss"); dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
dateFormatGmt.format(...)
示例:
System.out.println("UTC: " +cal.getTime()); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("default: " + format.format(cal.getTime())); format.setTimeZone(TimeZone.getTimeZone("GMT")); System.out.println("GMT: " + format.format(cal.getTime())); format.setTimeZone(TimeZone.getTimeZone("GMT-8")); System.out.println("GMT-8: " + format.format(cal.getTime()));
输出:
UTC: Wed May 03 05:18:34 CST 2017
default: 2017-05-03 05:18:34
GMT: 2017-05-02 21:18:34
GMT-8: 2017-05-02 13:18:34
备注:毫秒不受时区影响
JAVA 8:
- 不变性:新的日期/时间API中,所有的类都是不可变的,这对多线程环境有好处。
- 关注点分离:新的API将人可读的日期时间和机器时间(unix timestamp)明确分离,它为日期(Date)、时间(Time)、日期时间(DateTime)、时间戳(unix timestamp)以及时区定义了不同的类。
- 清晰:在所有的类中,方法都被明确定义用以完成相同的行为。举个例子,要拿到当前实例我们可以使用now()方法,在所有的类中都定义了format()和parse()方法,而不是像以前那样专门有一个独立的类。为了更好的处理问题,所有的类都使用了工厂模式和策略模式,一旦你使用了其中某个类的方法,与其他类协同工作并不困难。
- 实用操作:所有新的日期/时间API类都实现了一系列方法用以完成通用的任务,如:加、减、格式化、解析、从日期/时间中提取单独部分,等等。
- 可扩展性:新的日期/时间API是工作在ISO-8601日历系统上的,但我们也可以将其应用在非IOS的日历上。
Java日期/时间API包
1, java.time包:这是新的Java日期/时间API的基础包,所有的主要基础类都是这个包的一部分,如:LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration等等。所有这些类都是不可变的和线程安全的,在绝大多数情况下,这些类能够有效地处理一些公共的需求。
e.g.
LocalDate today = LocalDate.now();// current date
LocalDate.of(
2017
, Month.JANUARY,
1
);// create date by providing input
LocalDate.now(ZoneId.of(
"Asia/Kolkata"
));// current date in timezone
Asia/Kolkata
java.time.LocalTime:LocalTime是一个不可变的类,它的实例代表一个符合人类可读格式的时间,默认格式是hh:mm:ss.zzz。
e.g. LocalTime.now();
LocalTime.of(
12
,
20
,
25
,
40
);// create time by providing input
java.time.LocalDateTime:LocalDateTime是一个不可变的日期-时间对象,它表示一组日期-时间,默认格式是yyyy-MM-dd-HH-mm-ss.zzz。它提供了一个工厂方法,接收LocalDate和LocalTime输入参数,创建LocalDateTime实例.
e.g. LocalDateTime.now();
LocalDateTime.of(LocalDate.now(), LocalTime.now());
java.time.Instant:Instant类是用在机器可读的时间格式上的,它以Unix时间戳的形式存储日期时间.
e.g. Instant.now();
Instant.ofEpochMilli(Instant.now().toEpochMilli());
java.time.chrono包:这个包为非ISO的日历系统定义了一些泛化的API,我们可以扩展AbstractChronology类来创建自己的日历系统。
java.time.format包:这个包包含能够格式化和解析日期时间对象的类,在绝大多数情况下,我们不应该直接使用它们,因为java.time包中相应的类已经提供了格式化和解析的方法。
java.time.temporal包:这个包包含一些时态对象,我们可以用其找出关于日期/时间对象的某个特定日期或时间,比如说,可以找到某月的第一天或最后一天。你可以非常容易地认出这些方法,因为它们都具有“withXXX”的格式。
java.time.zone包:这个包包含支持不同时区以及相关规则的类
//utc时间
e.g. ZonedDateTime.now(ZoneOffset.UTC);
参考: http://www.importnew.com/14140.html
相关推荐
以下是关于Java获取UTC时间的详细知识: 1. **获取本地时间**: 要获取本地时间,可以使用`Calendar.getInstance()`方法。这个方法会根据系统默认的时区创建一个`Calendar`对象,代表当前的日期和时间。 ```java...
1. **获取精确时间**:GPS接收器接收到的信号包含了卫星发射的UTC时间,通过解码这些信息,可以获取到高精度的时间。 2. **时区转换**:在全球范围内,不同的地区有不同的时区,需要将UTC时间转换为当地时间。 3. ...
当从UTC时间转换为RTC时间时,我们需要考虑用户所在的时区和夏令时(DST, Daylight Saving Time)。UTC不包含时区信息,因此转换过程中需要结合地理位置和当前日期来确定适当的时区偏移。例如,如果用户位于东八区...
5. **获取并返回UTC时间**:最后,通过`GetTime()`方法从`fileUTCTime`中提取UTC时间值,并将其赋给`ullUTC`,完成整个转换过程。 ### 实际应用与注意事项 在实际开发中,除了上述方法外,还可以利用各种编程语言...
使用`ZonedDateTime.now(ZoneId.of("UTC"))`可获取当前的UTC时间。 3. **转换过程中的错误**:在将日期时间对象转换为字符串或者从字符串转换回日期时间时,如果没有正确指定时区,可能会出现时区转换错误。使用`...
当出现Java获取时间与实际相差8小时的情况,这通常是因为JVM的默认时区设置为UTC(协调世界时),而你的本地时区可能是东八区(中国北京时间)。UTC比北京时间晚8小时,因此造成了时间差。 解决这个问题的方法有...
在Java编程中,处理UTC时间转换主要涉及到`java.time`包中的类,如`Instant`、`ZonedDateTime`、`ZoneId`等。以下将详细解释这些类以及如何进行UTC时间的转换: 1. **`Instant` 类**:`Instant`代表了一个时间戳,...
### JAVA获取系统时间知识点详解 在Java编程语言中,获取并格式化系统当前时间是一项非常基础且常用的操作。本文档将详细介绍如何利用Java内置类来实现这一功能,并深入探讨其中涉及的重要概念和技术细节。 #### ...
解决 Java 获取时间与系统时间差 N 个小时的问题 在 Java 中获取时间时,可能会出现与系统时间相差 N 个小时的情况。这种情况通常是由于 Java 的时区设置不正确所致。下面将详细介绍解决该问题的方法。 时区设置是...
根据给定文件的信息,本文将深入探讨 Java 中与时间处理相关的知识,重点在于获取特定日期的方法及其实现细节。文章将覆盖如下知识点: 1. **Java 时间类的基础介绍** 2. **日期格式化与解析** 3. **获取当前日期、...
MySQL数据库默认使用的是协调世界时间(UTC),而Java应用程序可能运行在中国或其他东八区的时区(UTC+8)。当不正确地配置JDBC连接字符串中的时区参数时,就会出现这种时间偏差。在JDBC URL中,通常会包含一个`...
在Java编程语言中,时间的设置与获取是常见的任务,涉及到日期、时间、时区的处理,以及相关的API使用。本文将深入探讨Java中如何进行时间的设置与获取。 首先,Java提供`java.util.Date`类来表示日期和时间。但自...
在Java编程语言中,获取系统时间是常见的任务,通常用于记录日志、创建时间戳或者进行日期相关的计算。本文将详细介绍四种不同的方法来获取Java环境下的系统时间。 1. **通过`Date`类获取当前时间** ```java Date...
本文将深入探讨Java中关于时间操作的基本概念和技术,并重点介绍四种常见的应用场景:获取当前时间、获取某个时间的特定格式、设置时间以及进行时间的计算。 #### 一、获取当前时间 在Java中获取当前时间可以通过...
Java 8 时间API是Java平台的重大改进之一,它引入了全新的日期和时间处理库,显著提高了开发者处理日期和时间的便利性。这个API遵循ISO-8601标准,并提供了丰富的类来支持日期、时间、时区、持续时间和瞬时时间的...
`ZoneId`类用于获取或创建时区,而`ZoneOffset`则表示UTC的偏移量。例如,`ZoneId.of("Asia/Shanghai")`表示上海时区,`ZoneId.systemDefault()`返回系统默认时区。`ZonedDateTime`类可以方便地在不同的时区之间转换...
在Java编程语言中,获取当前时间是常见的任务,可以用于各种场景,如日志记录、时间戳计算等。本文将详细讲解如何在Java中获取和处理当前时间。 首先,Java提供了一个内置类`java.util.Date`,它表示特定的瞬间,...
在实际的程序中,开发者可能还使用了其他Java库,如`javax.swing.Timer`来定期更新时间显示,或者`java.net`包来从网络获取准确的UTC时间。此外,为了提供更好的用户体验,他们可能还考虑了异常处理、错误报告和用户...
`System.currentTimeMillis()`是Java API中最常用的时间获取方法,它返回自1970年1月1日00:00:00 UTC以来的毫秒数。虽然这个方法简单易用,但在高并发环境下,由于其线程不安全的特性,频繁调用可能导致CPU资源浪费...
此外,Java还提供了一些工具类,如`Clock`,可以获取当前系统时间,或者使用特定时区的时间源。`Instant`类表示自1970-01-01 00:00:00 UTC以来的精确时间点。 在实际开发中,我们还需要处理日期和时间的比较、计算...