首页 > 其他分享 >时区/时间戳

时区/时间戳

时间:2024-03-22 13:44:05浏览次数:14  
标签:java 时间 time Date 时区 GMT

时区

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

 

格林威治时间(GMT)

格林威治时间(Greenwich Mean Time,缩写为GMT)是以英国伦敦当地时间的标准,用作全球标准时间的参考基准。

上述说的24个时区,分别以 GMT-12 到 GMT+12 来表示。 如果北京时间可表示为 GMT+8。

 

java中new Date()不区分时区

如下代码

Date time = new Date();// calendar.getTime();
System.out.println(time+"\t"+time.getTime()+"\t"+TimeZone.getDefault()); // 系统默认时区是 Asia/Shanghai,即 GMT+8东八区北京时间
TimeZone.setDefault(TimeZone.getTimeZone("GMT+7")); // 修改当前时区 为 GMT+7
System.out.println(time+"\t"+time.getTime()+"\t"+TimeZone.getDefault());

运行结果:

Fri Mar 22 10:30:44 CST 2024 1711074644748 sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null]
Fri Mar 22 09:30:44 GMT+07:00 2024 1711074644748 sun.util.calendar.ZoneInfo[id="GMT+07:00",offset=25200000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

 

在Java中,new Date() 创建的是一个代表某个时间点的日期对象,它不直接关联时区信息。实际上,Date 类本身不储存时区信息,它只是以UTC(世界协调时间)来表示时间。当使用new Date()时,它会基于当前系统时区给出当前时间。

在使用System.out.println打印Date时,会调用Date#toString方法,该方法会获取系统的默认时区来进行时间的转换。

// ↓ java.util.Date.java

public String toString() {
    // "EEE MMM dd HH:mm:ss zzz yyyy";
    BaseCalendar.Date date = normalize();
    StringBuilder sb = new StringBuilder(28);
    int index = date.getDayOfWeek();
    …
}

private final BaseCalendar.Date normalize() {
    if (cdate == null) {
        BaseCalendar cal = getCalendarSystem(fastTime);
        cdate = (BaseCalendar.Date) cal.getCalendarDate(fastTime,
                                                        TimeZone.getDefaultRef());
        return cdate;
    }

    …
}


// ↓ java.util.TimeZone.java

static TimeZone getDefaultRef() {
    TimeZone defaultZone = defaultTimeZone;
    if (defaultZone == null) {
        // Need to initialize the default time zone.
        defaultZone = setDefaultZone();
        assert defaultZone != null;
    }
    // Don't clone here.
    return defaultZone;
}
View Code

 

如果需要处理涉及时区的日期和时间,可以使用java.time包下的类,比如ZonedDateTimeInstant 和 LocalDateTime

例如,使用ZonedDateTime来创建一个带时区的日期时间对象:

import java.time.ZonedDateTime;
import java.time.ZoneId;
 
public class TimeZoneExample {
    public static void main(String[] args) {
        // 获取当前日期时间,并指定时区
        ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
        System.out.println("Zoned DateTime in Shanghai: " + zonedDateTime);
 
        // 转换为其他时区
        ZonedDateTime zonedDateTimeInNewYork = zonedDateTime.withZoneSameInstant(ZoneId.of("America/New_York"));
        System.out.println("Zoned DateTime in New York: " + zonedDateTimeInNewYork);
    }
}

 

 

时间戳

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

时间戳和时区有没有关系

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

 

 

java中如何显示不同时区的时间 https://m.elecfans.com/article/836296.html

https://www.jianshu.com/p/b9a7739ff569

标签:java,时间,time,Date,时区,GMT
From: https://www.cnblogs.com/buguge/p/18086101

相关文章

  • 时间戳性能优化
    importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;importjava.util.concurrent.atomic.AtomicLong;publicclassSystemClock{privatestaticfinalStringTHREAD_NAME=&q......
  • Jackson进行JSON序列化/反序列化添加Java 8的日期和时间库支持
     添加依赖包<!--Jackson进行JSON序列化/反序列化添加Java8的日期和时间库支持--> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.13.0</version> ......
  • 时间和日期工具栏(二)
    importjava.math.BigDecimal;importjava.text.DateFormat;importjava.text.ParseException;importjava.text.ParsePosition;importjava.text.SimpleDateFormat;importjava.time.Instant;importjava.time.LocalDate;importjava.time.LocalDateTime;importjava.time.Zo......
  • 西理工校赛:PP 学姐的最短时间
    原题链接:K-PP学姐的最短时间​​​​​​题目大意:给n个点和m条边,给每条边通过的时间为a+b/(t+1),t为从当前点出发的时间。求从第一点到第n个点的最短时间。思路:这题明显是求最短路的题目,那么肯定可以使用迪杰斯特拉来跑最短路,但是二个点之间通过时间是动态的,那么如何来确定......
  • Debian时间和时区配置
    1.时区1.1.查看时区timedatectl输出Localtime:Thu2024-03-0713:46:06CSTUniversaltime:Thu2024-03-0705:46:06UTCRTCtime:Thu2024-03-0705:46:06Timezone:Asia/Shanghai(CST,+0800......
  • Linux系统服务必学之NTP时间服务搭建
            NTP(NetworkTimeProtocol,网络时间协议)是一种用于同步计算机系统时间的网络协议。它允许计算机通过网络与时间服务器进行通信,以获取准确的时间信息并将其应用于本地系统。NTP的主要目标是确保计算机系统之间的时间同步,以便在分布式系统和网络中实现一致性和准......
  • js——Date()怎么将获取北京时间的日期,精确到时分秒
    JavaScript的Date对象可以获取本地时间,但不直接支持时区。要获取特定时区的时间,你需要进行时区转换。以下是一个函数,用于获取特定时区(如“Asia/Shanghai”,即北京时间)的当前日期和时间,精确到秒。functiongetBeijingTime(){constbeijing=newDate().toLocaleString('en......
  • 解决[TSP旅行商]问题,请列出[4]个可以用[Python]编程的优化路径算法,展开写出这[4]个算
    TSP(旅行商问题)是一个经典的组合优化问题,其目标是找到访问所有城市并返回起点的最短可能路线。在Python中,有多种算法可以用来解决TSP问题,以下是四个常用的算法及其编程难度级别、时间复杂度和所需的库:回溯法(Backtracking)编程难度级别:中等时间复杂度:指数级,因为需要遍历所有......
  • 长时间禁用window自动更新服务
    1.进入注册表【win+r】,输入【regedit】 2.修改windows更新设置进入【计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings】下 在右侧空白处右键【新建】-->【DWORD(32位)值】 名称为【FlightSettingsMaxPauseDays】,新建完修改数值,数值为10进制,想禁......
  • GPS北斗授时服务器(NTP时间服务器)在5G网络系统的应用
    GPS北斗授时服务器(NTP时间服务器)在5G网络系统的应用GPS北斗授时服务器(NTP时间服务器)在5G网络系统的应用京准电子科技官微——ahjzsz摘要:5G网络部署和垂直行业应用对于时间同步提出了新的需求。为了更满足高精度的同步需求,需要采用高精度同步源技术、高精度同步传送技术、同步监......