时间戳格式转换(unix时间戳)

一、什么是时间

时间戳是一种用于表示日期和时间的数字,它通常是自某个特定时间点(通常是协调世界时(UTC)1970年1月1日00:00:00)以来经过的秒数或毫秒数。它通常被用作唯一的标识符、版本控制以及文件时间戳。

二、时间戳的格式

时间戳有两种主要的格式:UNIX时间戳和JavaScript时间戳。UNIX时间戳表示从1970年1月1日00:00:00 UTC到指定时间的秒数。而JavaScript时间戳则表示了指定日期到1970年1月1日00:00:00 UTC的毫秒数。

UNIX时间戳通常是一个整数,例如:

    $timestamp = 1519059000;
    echo date('Y-m-d H:i:s', $timestamp);

输出:2018-02-20 12:50:00。

而JavaScript时间戳通常是一个13位的整数,例如:

    var timestamp = 1519050123456;
    var date = new Date(timestamp);
    console.log(date.toLocaleString()); 

输出:2018/2/20 下午1:55:23。

三、时间戳与日期的相互转换

1. 时间戳转换为日期

我们可以使用PHP的date()函数将UNIX时间戳转换为日期。例如:

    $timestamp = 1519059000;
    echo date('Y-m-d H:i:s', $timestamp);

输出:2018-02-20 12:50:00。

而在JavaScript中,我们可以使用Date对象的toLocaleString()方法将JavaScript时间戳转换为日期。例如:

    var timestamp = 1519050123456;
    var date = new Date(timestamp);
    console.log(date.toLocaleString()); 

输出:2018/2/20 下午1:55:23。

2. 日期转换为时间戳

在PHP中,我们可以使用strtotime()函数将日期转换为UNIX时间戳。例如:

    $date = "2018-02-20 12:50:00";
    echo strtotime($date); 

输出:1519059000。

在JavaScript中,我们可以使用Date对象的getTime()方法将日期转换为JavaScript时间戳。例如:

    var date = new Date("2018-02-20 12:50:00");
    console.log(date.getTime()); 

输出:1519059000000。

四、时区转换

时间戳通常是以UTC时间为标准的,并且不包括时区的信息。因此,在将时间戳转换为人们可以理解的日期时,需要考虑时区的问题。

1. 将UTC时间戳转换为本地时间

在PHP中,我们可以使用date_default_timezone_set()函数设置时区,然后使用date()函数将时间戳转换为对应的本地时间。例如:

    date_default_timezone_set('Asia/Shanghai');
    $timestamp = 1519059000;
    echo date('Y-m-d H:i:s', $timestamp);

输出:2018-02-20 20:50:00(假设本地时区是北京时间)。

在JavaScript中,我们可以使用Date对象的toLocaleString()方法将UTC时间戳转换为本地时间。例如:

    var timestamp = 1519050123456;
    var date = new Date(timestamp);
    console.log(date.toLocaleString('zh-CN', {timeZone: 'Asia/Shanghai'}));

输出:2018/2/20 下午9:55:23(假设本地时区是北京时间)。

2. 将本地时间转换为UTC时间戳

在PHP中,我们可以使用strtotime()函数将本地时间转换为UTC时间戳。例如:

    date_default_timezone_set('Asia/Shanghai');
    $date = "2018-02-20 12:50:00";
    $timestamp = strtotime($date);
    echo gmdate('Y-m-d H:i:s', $timestamp);

输出:2018-02-20 04:50:00(这里使用的是gmdate()函数,因为这里需要将时间转换为UTC时间)。

在JavaScript中,我们可以使用Date对象的getTime()方法将本地时间转换为UTC时间戳。例如:

    var date = new Date("2018-02-20 12:50:00");
    var timestamp = date.getTime() - (date.getTimezoneOffset() * 60000);
    console.log(timestamp);

输出:1519059000000。

五、总结

时间戳是一种用于表示日期和时间的数字,通常用于唯一的标识符、版本控制以及文件时间戳等领域。时间戳通常有UNIX时间戳和JavaScript时间戳两种格式,前者以秒为单位表示,后者以毫秒为单位表示。

在将时间戳转换为日期时,可以使用date()函数(PHP)或Date对象的toLocaleString()方法(JavaScript)进行转换,而将日期转换为时间戳时,可以使用strtotime()函数(PHP)或Date对象的getTime()方法(JavaScript)进行转换。

需要注意的是,时间戳通常是以UTC时间为标准的,并且不包括时区的信息。在将时间戳转换为本地时间时,需要考虑时区的问题。在PHP中,可以使用date_default_timezone_set()函数设置时区,然后使用date()函数将时间戳转换为对应的本地时间;在JavaScript中,可以使用Date对象的toLocaleString()方法设置时区。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平