Java 时间 GMT UTC UNIX Timestamp 时区

彻底搞懂UTC、GMT、CST时区概念与全栈开发实践指南 时区处理是分布式系统和国际化应用开发中的基础技术概念,它直接关系到数据一致性和系统可靠性。其核心原理在于协调世界时(UTC)作为全球统一的时间基准,而各时区则基于UTC进行偏移。在技术价值上,正确的时区处理能避免数据污染、定时任务错乱和跨时区业务逻辑错误等严重问题。应用场景广泛覆盖后端服务、数据库存储、API设计和前端展示等全链路开发环节。本文聚焦UTC、GMT、CST等关键概念辨析,并提供从数据库配置到前后端代码的完整实践方案,帮助开发者构建健壮的时间处理体系,其中时区偏移量和夏令时处理是需要特别关注的技 阅读详情

时区

指地球上的一块区域使用的同一时间定义,以经度划分,每个时区横跨15经度,总共24个时区,东西各12个时区。

格林威治标准时间(GMT)和UTC

GMT 地区:英国 皇家格林尼治天文台 时区:UTC/GMT 0 (零时区)
UTC与格林威治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同,UTC与GMT基本上等同,误差不超过0.9秒

UNIX时间戳

指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,
注意“现在”这个词,如果是格林威治时间 ,现在指的是格林威治当前的时间,如果是北京时间,现在指的是北京当前的时间

因此,严格来说,不管你处在地球上的哪个地方,任意时间点的时间戳都是相同的.

这点有利于线上和客户端分布式应用统一追踪时间信息。

ex:
比如我的电脑现在的系统时间为2015年2月27日15点43分0秒,因为我的电脑默认时区为东8区,则0时区的时间为2015年2月27日7点43分0秒,则UNIX时间戳为1425022980秒。

什么是北京时间?

北京时间并不是北京(东经116.4°)的地方时间,而是东经120°的地方时间,故东经120度地方时比北京的地方时早约14分半钟。
因为北京处于国际时区划分中的东八区,同格林尼治时间(世界时)整整相差8小时(即北京时间=世界时+8小时),故命名为“北京时间”

时间戳和时区有没有关系

容易晕乎,其实二者没有关系的,时间戳在哪个时区都是一样的,我们可以通过时间戳和时区去计算当前时区的时间

编码


import java.text.SimpleDateFormat;
import java.util.Date;


public class UNIXTimestamp {
    public static void main(String[] args) {
        // System.currentTimeMillis(),获取本地系统timestamp, 
      	// 获取的时间是以"北京时间",时区为东八区的时间
      	// 也是就是说以系统时间为东八区的时间-(北京时间1970年01月01日08时00分00秒)转化为timestamp
        Long stamp = System.currentTimeMillis() / 1000L;
        // 因此转化也为当前系统时间时区为东八区的时间转化
        String nowDate = tstampToDate(stamp);
        System.out.println(stamp);
        System.out.println(nowDate);
        // 目前已经有了timestamp,当前时区为东八区,如果要获取0时区(也就是伦敦时间)的时间?
        // 只需要-8h
        Long zeroStamp = stamp - 8 * 60 * 60;
        String zeroData = tstampToDate(zeroStamp);
        System.out.println(zeroData);
    }

    public static String tstampToDate(Long time) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time_Date = sdf.format(new Date(time * 1000L));
        return time_Date;

    }
}

// System.currentTimeMillis(),获取本地系统timestamp,
// 获取的时间是以"北京时间",时区为东八区的时间
// 也是就是说以系统时间为东八区的时间-(北京时间1970年01月01日08时00分00秒)转化为timestamp

Long stamp = System.currentTimeMillis() / 1000L;

// 因此转化也为当前系统时间时区为东八区的时间转化

 String nowDate = tstampToDate(stamp);

// 目前已经有了timestamp,当前时区为东八区,如果要获取0时区(也就是伦敦时间)的时间?
// 只需要-8h

        Long zeroStamp = stamp - 8 * 60 * 60;
        String zeroData = tstampToDate(zeroStamp);
        System.out.println(zeroData);

控制台输出

1612191207
2021-02-01 22:53:27
2021-02-01 14:53:27
UTC、CST、GMT时区概念全解析与开发实践避坑指南 时区处理是软件开发中一个基础但极易出错的技术点,其核心在于解决全球协同下时间数据的统一与准确显示问题。其基本原理是确立一个全球基准时间(如UTC),各地时间通过时区偏移量进行换算。掌握时区概念与处理规范,对于构建健壮的分布式系统、确保跨时区数据一致性具有关键价值,尤其在电商、社交、SaaS等全球化应用场景中至关重要。本文聚焦UTC、GMT、CST等核心概念的本质区别,并针对MySQL时区配置、服务器时区偏移等高频问题,提供从存储、传输到显示的全链路工程实践方案,帮助开发者系统性地规避时间类Bug。 阅读详情

相关推荐

从UTC、GMT到CST:软件开发的时区处理全链路实践指南

在计算机系统中,时间处理是数据一致性和全球协作的技术基石。其核心原理在于区分挂钟时间、Unix时间戳和ISO 8601等不同时间表示形式,并通过时区数据库(如IANA tzdata)管理全球复杂的时区规则。这一机制的技术价值在于确保分布式系统、跨时区服务在存储、计算和传输过程中的时间语义统一,避免因时区混淆导致的数据错乱、订单异常等严重问题。应用场景广泛覆盖数据库设计、API接口、前端展示及运维配置等全链路环节。本文聚焦UTC、GMT与易混淆的CST等核心概念,结合开发实践中常见的时区陷阱,提供从概念辨析到

weixin_30338497的博客 337

java,时间戳,时区

一,时区 全球一共分为24个时区,规定格林威治地区为0时区,不要问我为什么,规定。 从0开始时区开始向右有十二个时区,分别是东一区,东二区,依次东十二区。向左开始也有十二个区,分别是西一区,西二区,依次类推,西十二区。 向右每跨一个时区,时间间隔加一小时,我们的北京时间是在东八区,打个比方, 当前格林威治时间是 2020-01-01 00:00:00 , 那么北京时间就是 202...

qq_29382145的博客 3475

TimeStamp(用java实现时间戳)

TimeStamp(用java实现时间戳)

java timestamp 时区_java.sql.Timestamp:更改Timestamp的时区(java.sql.Timestamp: changing timezone of Timesta...

java.sql.Timestamp objects don't have time zones - they are instants in time, like java.util.Date.If you're thinking of them as being in a particular time zone, you may either be getting confused due ...

weixin_39723010的博客 738

AMEsim不连续处理机制:仿真精度与效率的平衡艺术

本文深入解析AMEsim不连续处理机制在系统仿真中的应用,探讨如何平衡仿真精度与效率。通过液压系统仿真案例,详细介绍了事件检测算法、变步长求解器自适应策略及典型场景优化方法,帮助工程师有效应对仿真中的不连续性问题,提升仿真效率和准确性。

v4w5x6的博客 440

英飞凌IGBT驱动芯片2ED020I12F2去饱和电路设计总结整理收集

记录下英飞凌IGBT驱动芯片限流电阻阻值设计

nizhenyuchina的博客 5994

Java时间戳和时区的转换

srcTimeZone为服务器所在的时区。 destTimeZone为目标转换时区。 convertDateBetweenTimeZone为转换函数,输入需要转换的目标时区,和时间戳,返回目标时区的时间戳对应时间 import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util....

albert0707的专栏 7946

费斯托SPAN压力传感器的调试

本体为压力传感器,检测气压大小,通过设置参数,在上电上气时对气压进行判断,进而通过自身逻辑的判断,控制传感器的通断,进而控制机械部位的工作与运行;通电之后为如下图所示的样子有三个按键ABEdit键(编辑键、确认键)两步即可轻松连接。

大小曲奇的博客 1万+

java timestamp时区_Java中Date及Timestamp时间相关内容(转)

java.util.date java.sql.date java.sql.timestamp整理一:java.sql.Date 只存储日期数据不存储时间数据// 会丢失时间数据 preparedStatement.setDate(1, new java.sql.Date(date.getTime()));//可以这样来处理 preparedStatement.setTimestamp(1, ne...

weixin_39883906的博客 1364

caverdock如何使用,一文给你多方案教学!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1388

【ArcGIS风暴】ArcGIS 10.2导入Excel数据X、Y坐标(经纬度、平面坐标),生成Shapefile点数据图层

用过CASS的人都知道,野外数字测图得到的点数据(平面坐标)可以直接导入到CASS中,进一步绘制地形图。那么,带有坐标的数据能不能在ArcGIS中实现点图层的生成呢?答案是必须的! 本文以气象台站shp数据的生成为例,详细介绍ArcGIS 10.2中导入X、Y坐标(这里指的是经度、纬度),生成Shapefile点数据的流程。 相关阅读:《全站仪、RTK测量坐标数据在CASS和ArcGIS中展点的区别和联系》 目录 1、数据准备 2、添加X、Y数据 3、属性表连接(Join) 4、导出为Sh.

智慧空间实验室 10万+

java如何获取北京时间

System.currentTimeMillis()获取的是当前系统服务器的时间但是如果服务器是国外的则不能获取到北京时间,下面的方法,可以获取到北京时间 Calendar calendar = Calendar.getInstance(Locale.CHINA); Date time = calendar.getTime(); SimpleDateFormat...

Shu2018ai的博客 6032

在Ubuntu系统中安装和使用wxPython进行Python图形用户界面(GUI)开发

在本文中,我将向您展示如何在Ubuntu系统上安装和使用wxPython,并提供一些示例代码来帮助您开始使用这个强大的工具。在MyFrame的构造函数中,我们创建了一个wx.Panel和一个按钮,并将按钮的点击事件绑定到一个自定义的方法on_button_click上。最后,我们创建了一个wx.App的实例,创建了一个MyFrame对象并显示它,最后通过调用app.MainLoop()启动应用程序的主事件循环。这只是一个简单的示例,但它演示了如何使用wxPython创建一个基本的GUI应用程序。

qq_37934722的博客 1040

彻底搞懂MySQL TimeStamp的时区问题

MySQL驱动在发送sql前,会将jdbc中的Date对象参数,根据serverTimeZone配置的时区转化为日期字符串后,再发送sql请求给MySQL server,同样在MySQL server返回查询结果后,结果中的日期值也是日期字符串,MySQL驱动会根据serverTimeZone配置的时区,将日期字符串转化为Date对象。因此,当serverTimeZone与数据库实际时区不一致时,会发生时区转换错误,导致时间偏差,如下:比如一个时间值是东8区的。

loopnz的博客 5398

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4614

论deepseek软件底层原理

如处理医学文本时,将任务分配给擅长医学知识处理的专家,避免通用模块处理的低效性,极大提升计算效率与任务处理的针对性。教师模型复杂且强大,学生模型结构简单。协作处理:多模块协作时,建立数据流通与交互机制,各模块按顺序或并行处理数据,不断传递与更新中间结果,共同完成复杂任务。(一)输入处理与任务判断 输入预处理:接收输入数据,如用户文本提问,首先进行清洗,去除噪声数据、特殊字符等。任务分类:通过MoE架构“路由器”,依据输入数据特征,判断任务所属领域与类型,如文本分类、情感分析等,为后续处理模块选择提供依据。

欢乐打代码! 2738

程序员必看:GMT、UTC、UTS和AOE时区概念全解析(附代码示例)

本文全面解析GMT、UTC、UTS和AOE四种关键时区概念,帮助程序员掌握分布式系统中的时间处理技术。通过JavaScript、Python和Java等代码示例,详细展示时区转换、Unix时间戳应用及AOE时间在跨国协作中的实践,避免常见时区陷阱,提升开发效率。

potato的博客 616

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

UTC时间、GMT时间、本地时间、Unix时间戳

GMT和UTC GMT,即格林尼治标准时间,也就是世界时。GMT的正午是指当太阳横穿格林尼治子午线(本初子午线)时的时间。但由于地球自转不均匀不规则,导致GMT不精确,现在已经不再作为世界标准时间使用。 UTC,即协调世界时。UTC是以原子时秒长为基础,在时刻上尽量接近于GMT的一种时间计量系统。为确保UTC与GMT相差不会超过0.9秒,在有需要的情况下会在UTC内加上正或负闰秒。UTC现在作...

spark_guo的专栏 1063

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

时间:UTC时间、GMT时间、本地时间、Unix时间戳

1.UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT=UTC),格林威治时间和UTC时间均用秒数来计算的。 2.UTC时间 与 本地时 UTC + 时区差 = 本地时间 时区差东为正,西为负。在此,把东八区时区差记为 +0800, UTC + (+0800) = 本地(北京)时间 (1) 那么,UTC = 本地时间(北京时间)

铭霏的记事本 8万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

[转帖]UTC时间、GMT时间、本地时间、Unix时间戳

UTC时间、GMT时间、本地时间、Unix时间戳 https://www.cnblogs.com/xwdreamer/p/8761825.html 引用: https://blog.youkuaiyun.com/u012102306/article/details/51538574 https://blog.youkuaiyun.com/foxir/article/details/...

weixin_30904593的博客 239

弄清楚时间是怎么回事----GMT&UTC&CST&Gregorian&TimeZone&Unix timestamp

1.时间标准简介GMT,CST,UTC UTC(世界标准时间) 协调世界时,又称世界标准时间或世界协调时间,简称UTC(从英文“Coordinated Universal Time”/法文“Temps Universel Coordonné”而来),是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。 GMT(格林尼治平时) 格林尼治平时(又称格...

BRAVE MAN的博客 5094

php gmtime存mysql_UTC时间、GMT时间、本地时间、Unix时间戳

引用:https://blog.youkuaiyun.com/u012102306/article/details/51538574https://blog.youkuaiyun.com/foxir/article/details/43916601GMT和UTCGMT,即格林尼治标准时间,也就是世界时。GMT的正午是指当太阳横穿格林尼治子午线(本初子午线)时的时间。但由于地球自转不均匀不规则,导致GMT不精确,现在已经不...

weixin_35064481的博客 121

时区处理与东八区的程序员们

前言在和前端同学联调的过程中,我们通常会遇到与时间有关的场景:为什么传过来的时间落库的时候总是1970年?为什么相同的时间戳在不同的区域里转换成的时间字符串不一样?为什么不同的转换方法换成的结果一会是GMT,一会是UTC?时间,这个在开发中不起眼的一环,却又往往会让很多开发者在遇到时犹豫不决。在本文开始之前,先抛出一个问题:在日常的业务场景中,什么场景使用北京时间?什么场景使用本地时间?GMT与U...

1920

MySQL 的 timestamp 会存在时区问题?

这时,数据库保存的时间是东 9 区的 2020-02-23 08:00:00,也就是东 8 区的 2020-02-23 07:00:00,保存的时间就偏差了 1 个小时。而日本的时区是东 9 区,表示为 +9:00,或 GMT+9,当中国是早上 8 点时,日本是早上 9 点,即东 8 区的 8 点与东 9 区的 9 点,这两个时间是相等的。对于 UNIX 时间戳,就不会有此问题,因为它是绝对时间。所以本地时间都是与某一时区相关的,脱离时区看本地时间,是没有意义的,因为你并不知道这具体是指的什么时间点。...

m0_72885838的博客 3168
上一篇: Java Maven
下一篇: 编译基础-从hello.c到hello可执行文件的过程
code222vip
博客等级 码龄12年 33粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值