`
bobolnear
  • 浏览: 4116 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

关于Java时区的详解

    博客分类:
  • Java
阅读更多
一. 基本概念
时区 :time zone 1884年国际经线会议规定,全球按经度分为24个时区,每区各占经度15°。
以本初子午线为中央经线的时区为零时区,由零时区向东、西各分12区,东、西12区都是半时区,共同使用180°经线的地方时。
CST :China Standard Time UTC+8:00 中国标准时间(北京时间),在东八区
UTC :Universal Time Coordinated,世界协调时间,又称世界标准时间、世界统一时间。UTC 提供了一种与时区无关(或非特定于时区)的时间。
世界上的所有时区都可以表示为 UTC 加上或减去一个偏移量。
因此,UTC是0时区的时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时
GMT :Greenwich Mean Time格林威治标准时间,指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
Unix timestamp :Unix时间戳,或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,
定义为从格林威治时间(UTC/GMT的午夜)1970年01月01日00时00分00秒起至现在的总秒数。
可以这么说:
UTC和GMT几乎是同一概念,两者的区别是GMT是一个天文上的概念,UTC是基于原子钟。
GMT=UTC
GMT + 8 = UTC + 8 = CST
UTC+时间差=本地时间 (时间差东为正,西为负,东八区记为 +0800)
/**
	*@Author Rambo
	*@Desc:通过毫秒获取Calendar
	*@param millis
	*@return TODO
	*@Version  DateUtils.java,v 1.1 2015-1-21 上午11:22:54 
	*/
	public static Calendar getCalendar(long millis) {
		Calendar cal = Calendar.getInstance();
		cal.setTimeInMillis(millis);
		return cal;
	}

	/**
	*@Author Rambo
	*@Desc:通过日期获取Calendar
	*@param date
	*@return TODO
	*@Version  DateUtils.java,v 1.1 2015-1-21 上午11:23:07 
	*/
	public static Calendar getCalendar(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return cal;
	}
public static Date convertStringToDate(String strDate, String pattern) {
		if (StringUtils.isStringEmpty(strDate))
			return null;
		if (StringUtils.isStringEmpty(pattern))
			pattern = PATTERN_DATETIME;
		SimpleDateFormat df = new SimpleDateFormat(pattern);
		try {
			return df.parse(strDate);
		} catch (ParseException e) {
			logger.error(strDate + "转化成" + pattern + "出现异常!");
			return null;
		}
	}
public static void main(String[] args) {
		Date local1970 = DateUtils.convertStringToDate("1970-01-01 00:00:00", "yyyy-MM-dd HH:mm:ss");
		System.out.println("当前时区的格林尼治时间的毫秒数:"+local1970.getTime());
//		TimeZone timeBJ = TimeZone.getTimeZone("PRC");//得到北京时间的时区
		TimeZone timeBJ = TimeZone.getTimeZone("GMT+8");//得到北京时间的时区	
		String[] strs = timeBJ.getAvailableIDs();
		for (int i = 0; i < strs.length; i++) {
			System.out.println("东八区ID:"+strs[i]);
		}
		System.out.println(timeBJ.getOffset(local1970.getTime()));
		//所以如果要获取当地正确的时间
		TimeZone timeLocal = TimeZone.getTimeZone(getCalendar(local1970).getTimeZone().getID());//得到当前时间的时区	
		long timeZoneMi= timeLocal.getOffset(local1970.getTime());//当前时间要扣减的毫秒数
		long date1970 = local1970.getTime() + timeZoneMi;
		System.out.println("1970年格林威治时间的毫秒数:"+date1970);
	}

  • 大小: 457.1 KB
分享到:
评论

相关推荐

    java转换时区时间过程详解

    Java时区时间转换过程详解 Java时区时间转换是指将一个时区的时间转换成另一个时区的时间,这个过程需要了解时区的概念和计算方法。在本文中,我们将详细介绍时区的概念、UTC时间、格林尼治时间、夏令时、区时转换...

    java时区转换的理解及示例详解

    Java时区转换的理解及示例详解 Java时区转换是Java编程语言中一个重要的概念,对于时间相关的操作非常重要。在本文中,我们将详细介绍Java时区转换的理解及示例详解。 一、时区的基本概念 时区是指地球上的一个...

    关于Java中的mysql时区问题详解

    "Java 中的 MySQL 时区问题详解" Java 中的 MySQL 时区问题是一种常见的问题,尤其是在分布式系统中,对时区的处理尤为重要。本文将详细介绍 Java 中的 MySQL 时区问题,并通过示例代码进行讲解。 一、时区问题的...

    java类库详解

    8. **日期和时间**:`java.util.Date`和`java.time`包(自Java 8引入)提供了处理日期、时间和时区的功能。 9. **泛型**:Java的泛型允许在类、接口和方法中使用类型参数,增加了代码的类型安全性和重用性。 10. *...

    Java-Java8十大特性详解教程

    在这个Java8十大特性详解教程中,我们将深入探讨这些关键特性,旨在帮助你更好地理解和应用Java 8。 1. **lambda表达式**: Lambda表达式是Java 8中最显著的特性之一,它简化了函数式编程,使得处理集合数据变得...

    java1.8 java1.8

    新API提供了更好的操作日期、时间、时区的能力,如LocalDate、LocalTime、LocalDateTime和ZonedDateTime等类。 6. **Optional类**:Java 8引入了Optional类,用来表示可能存在也可能不存在的值。这有助于防止空指针...

    详解Java中的时区类TimeZone的用法

    在Java编程中,`TimeZone` 类是处理时区的关键组件,它允许我们获取和设置与特定地理位置相关的日期和时间偏移。时区不仅反映了地理位置相对于格林尼治标准时间(GMT)的偏移,还考虑了夏令时(DST)的调整。本文将...

    Java中ZonedDateTime使用详解

    Java中的`ZonedDateTime`类是Java 8引入的一个新特性,用于处理带有时区的日期和时间。这个类提供了一种高效且灵活的方式来管理和转换不同时区的时间。下面是对`ZonedDateTime`的详细讲解。 ## 1. 带时区的日期和...

    Java 8特性全面解析

    新的java.time包中的日期时间API包括了LocalDate、LocalTime、LocalDateTime等类,它们设计得更加合理,并且支持时区处理,使得日期时间操作更加直观和安全。 综上所述,Java 8通过引入Lambda表达式、函数式接口、...

    JAVA Calendar,Date类详解

    在Java编程语言中,`Calendar`和`Date`类是处理日期和时间的核心组件。...在阅读"JAVA Calendar,Date类详解"的相关文件后,你将能深入理解这两个类的内部机制,以及如何在实际项目中有效利用它们。

    最新 java se8 虚拟机 详解

    新API支持时区、日期、时间、日期时间间隔和持续时间的处理。 5. **Stream API**:Stream API为集合提供了声明性处理方式,使得对数据进行过滤、映射和聚合等操作更加直观。它可以并行处理,从而充分利用多核处理器...

    JAVA日期操作类详细讲解

    其中,`java.time.LocalDate`、`java.time.LocalDateTime`和`java.time.LocalTime`分别代表日期、日期时间(不包含时区)和时间。它们提供了丰富的静态工厂方法和实例方法,使得日期操作更为简便。 `LocalDateTime`...

    java仿windows日历

    【Java仿Windows日历开发详解】 在编程领域,尤其是Java应用开发中,创建一个类似Windows操作系统的日历组件是一项常见的任务。这个项目旨在实现一个基本的日历功能,它包括时钟显示、时区管理和地图定位等功能,...

    Java软件开发实战 Java基础与案例开发详解 9-4 日期类简介 共7页.pdf

    本文将重点介绍《Java软件开发实战》中关于日期类的基础知识及其使用方法,帮助读者更好地理解和掌握日期类的运用。 #### 9.4 日期类简介 在本节中,我们将学习如何在Java中处理日期。Java提供了几个内置类来处理...

    详解Java8 新特性之日期API

    Java 8 新特性之日期API Java 8 中的日期API是一组全新的时间...Java 8 的日期API提供了多种方法来处理日期和时间,包括时钟、时区、本地时间、本地日期等。这些API可以帮助开发者更方便地处理日期和时间相关的操作。

    Java Calendar类的详解及使用实例

    Java Calendar类的详解及使用实例 Java Calendar类是Java中一个非常重要的日期处理类,它提供了对日期的操作和处理的功能。在实际项目中,我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX...

    tzdb.dat JRE8

    《tzdb.dat在Java 8中的重要性和使用详解》 tzdb.dat文件是Java运行时环境(JRE)的一部分,特别是在Java 8版本中,它扮演着至关重要的角色。tzdb.dat,全称Time Zone Database,是Java用来存储全球时区信息的数据...

    java设置日期格式

    ### Java设置日期格式详解 #### 一、简介 在Java编程中,经常需要处理与日期相关的数据。为了更好地展示和操作这些数据,Java提供了一系列工具类来帮助开发者完成任务。其中,`SimpleDateFormat` 类是 `java.text`...

    MySQL timestamp的类型与时区实例详解

    MySQL中的`TIMESTAMP`数据类型是用来存储日期和时间的,特别之处在于它与时区有密切关系。在MySQL中,`TIMESTAMP`的时间范围是从'1970-01-01 00:00:01'到'2038-01-19 03:14:07',这是基于UTC(协调世界时)的标准。...

    java-demo-01:Java相关的demo,呵呵

    关于Java时区的详解-2015-01-21 Java: Date local1970 = DateUtils.convertStringToDate("1970-01-01 00:00:00", "yyyy-MM-dd HH:mm:ss"); System.out.println("当前时区的格林尼治时间的毫秒数:"+local1970....

Global site tag (gtag.js) - Google Analytics