UnixEpoch

Unix时间戳开发者资源和代码片段

在这里您可以找到不同编程语言处理Unix时间戳的代码示例。从下面选择一种语言:

按语言分类的 Unix 时间戳代码片段

在这里您可以找到不同编程语言处理Unix时间戳的代码示例。从下面选择一种语言:

相关工具: Epoch 转换er, Date 转换er, Locale 转换er, Locale 转换er Guide, Unix ms to Date, 时区转换器

常见问题

How do I get the current Unix timestamp in JavaScript? Use Math.floor(Date.now() / 1000) for Unix seconds or Date.now() for Unix milliseconds in JavaScript.

How do I convert epoch to datetime in Python, PHP, or SQL? Use the language-specific examples on this page to parse Unix timestamps into UTC or local datetime output for debugging, APIs, and database work.

What is the difference between Unix seconds and Unix milliseconds in code? Unix seconds are usually 10 digits and are common in backend systems. Unix milliseconds are usually 13 digits and are common in JavaScript, analytics, and browser events.

获取当前时间戳

JavaScript
// Get current Unix timestamp (seconds)
const timestampIn秒 = Math.floor(Date.now() / 1000);
console.log(timestampIn秒);

// Get current Unix timestamp (milliseconds)
const timestampIn毫秒 = Date.now();
console.log(timestampIn毫秒);

将时间戳转换为日期

JavaScript
// 转换 Unix timestamp to date
const timestamp = 1609459200; // 2021-01-01 00:00:00 UTC
const date = new Date(timestamp * 1000);

console.log(date.toISOString()); // "2021-01-01T00:00:00.000Z"
console.log(date.toLocaleString()); // Localized format

将日期转换为时间戳

JavaScript
// 转换 date string to Unix timestamp
const dateString = '2021-01-01T00:00:00Z';
const timestamp = Math.floor(new Date(dateString).getTime() / 1000);
console.log(timestamp); // 1609459200

// 转换 Date object to Unix timestamp
const date = new Date(2021, 0, 1); // 注意: 个月 start at 0
const timestampFromDate = Math.floor(date.getTime() / 1000);
console.log(timestampFromDate);

注意:

JavaScript 的 Date.now() 返回毫秒。要得到秒,请除以 1000。

从秒转换为 Date 对象时,请乘以 1000。

获取当前时间戳

Python
import time
import datetime

# Get current Unix timestamp (seconds)
timestamp_seconds = int(time.time())
print(timestamp_seconds)

# Get current Unix timestamp (milliseconds)
timestamp_milliseconds = int(time.time() * 1000)
print(timestamp_milliseconds)

# Using datetime
dt = datetime.datetime.now()
timestamp_from_datetime = int(dt.timestamp())
print(timestamp_from_datetime)

将时间戳转换为日期

Python
import time
import datetime

# 转换 Unix timestamp to date
timestamp = 1609459200  # 2021-01-01 00:00:00 UTC

# Using time module
date_str = time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(timestamp))
print(date_str)  # '2021-01-01 00:00:00'

# Using datetime module
date_obj = datetime.datetime.fromtimestamp(timestamp, tz=datetime.timezone.utc)
print(date_obj.strftime('%Y-%m-%d %H:%M:%S'))  # '2021-01-01 00:00:00'

将日期转换为时间戳

Python
import datetime

# 转换 date string to Unix timestamp
date_string = '2021-01-01 00:00:00'
date_obj = datetime.datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')

# 转换 to timestamp (assumes local timezone)
timestamp = int(date_obj.timestamp())
print(timestamp)

# Explicitly specify UTC timezone
date_obj_utc = date_obj.replace(tzinfo=datetime.timezone.utc)
timestamp_utc = int(date_obj_utc.timestamp())
print(timestamp_utc)

注意:

Python 的 time.time() 返回浮点秒。整数秒请使用 int()

进行时区处理时,可考虑使用 pytz 库以获得更稳健的时区支持。

获取当前时间戳

Java
import java.time.Instant;

public class TimestampExample {
    public static void main(String[] args) {
        // Get current Unix timestamp (seconds)
        long timestampIn秒 = Instant.now().getEpochSecond();
        System.out.println(timestampIn秒);

        // Get current Unix timestamp (milliseconds)
        long timestampIn毫秒 = Instant.now().toEpochMilli();
        System.out.println(timestampIn毫秒);

        // Traditional method
        long currentTimeMillis = System.currentTimeMillis();
        long timestamp秒 = currentTimeMillis / 1000L;
        System.out.println(timestamp秒);
    }
}

将时间戳转换为日期

Java
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class TimestampToDateExample {
    public static void main(String[] args) {
        // 转换 Unix timestamp to date
        long timestamp = 1609459200L; // 2021-01-01 00:00:00 UTC

        // Using Instant and formatter
        Instant instant = Instant.ofEpochSecond(timestamp);
        DateTimeFormatter formatter = DateTimeFormatter
            .ofPattern("yyyy-MM-dd HH:mm:ss")
            .withZone(ZoneId.of("UTC"));

        String formattedDate = formatter.format(instant);
        System.out.println(formattedDate); // "2021-01-01 00:00:00"
    }
}

将日期转换为时间戳

Java
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class DateToTimestampExample {
    public static void main(String[] args) {
        // 转换 date string to Unix timestamp
        String dateString = "2021-01-01 00:00:00";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // Parse and convert to timestamp (assuming UTC)
        LocalDateTime dateTime = LocalDateTime.parse(dateString, formatter);
        ZonedDateTime zonedDateTime = dateTime.atZone(ZoneId.of("UTC"));
        long timestamp = zonedDateTime.toEpochSecond();

        System.out.println(timestamp); // 1609459200
    }
}

注意:

Java 8+ 引入了 java.time 包,可更好地处理日期和时间。

UTC 时间戳请使用 Instant,需要时区感知的操作请使用 ZonedDateTime

获取当前时间戳

PHP
<?php
// Get current Unix timestamp (seconds)
$timestampIn秒 = time();
echo $timestampIn秒;

// Get current Unix timestamp (milliseconds)
$timestampIn毫秒 = round(microtime(true) * 1000);
echo $timestampIn毫秒;

// Using DateTime class
$dateTime = new DateTime();
$timestampFromDateTime = $dateTime->getTimestamp();
echo $timestampFromDateTime;
?>

将时间戳转换为日期

PHP
<?php
// 转换 Unix timestamp to date
$timestamp = 1609459200; // 2021-01-01 00:00:00 UTC

// Using date function (local timezone)
$dateFormatted = date('Y-m-d H:i:s', $timestamp);
echo $dateFormatted;

// Using gmdate for UTC
$dateFormattedUTC = gmdate('Y-m-d H:i:s', $timestamp);
echo $dateFormattedUTC; // "2021-01-01 00:00:00"

// Using DateTime class
$dateTime = new DateTime("@$timestamp");
$dateTime->setTimezone(new DateTimeZone('UTC'));
echo $dateTime->format('Y-m-d H:i:s');
?>

将日期转换为时间戳

PHP
<?php
// 转换 date string to Unix timestamp
$dateString = '2021-01-01 00:00:00';

// Using strtotime (assumes local timezone)
$timestamp = strtotime($dateString);
echo $timestamp;

// Specify UTC timezone
$timestampUTC = strtotime($dateString . ' UTC');
echo $timestampUTC;

// Using DateTime class with timezone
$dateTime = new DateTime($dateString, new DateTimeZone('UTC'));
$timestamp = $dateTime->getTimestamp();
echo $timestamp; // 1609459200
?>

注意:

PHP 的 time() 返回秒。需要小数秒时请使用 microtime(true)

使用 date()strtotime() 函数时,请注意时区设置。

获取当前时间戳

Go
package main

import (
    "fmt"
    "time"
)

func main() {
    // Get current Unix timestamp (seconds)
    timestampIn秒 := time.Now().Unix()
    fmt.Println(timestampIn秒)

    // Get current Unix timestamp (milliseconds)
    // UnixMilli() requires Go 1.17+, using UnixNano() for better compatibility
    timestampIn毫秒 := time.Now().UnixNano() / int64(time.Millisecond)
    fmt.Println(timestampIn毫秒)
}

将时间戳转换为日期

Go
package main

import (
    "fmt"
    "time"
)

func main() {
    // 转换 Unix timestamp to date
    timestamp := int64(1609459200) // 2021-01-01 00:00:00 UTC

    // Create time object
    t := time.Unix(timestamp, 0)

    // Format date (UTC)
    fmt.Println(t.UTC().Format("2006-01-02 15:04:05"))

    // Format date (local timezone)
    fmt.Println(t.Format("2006-01-02 15:04:05"))
}

将日期转换为时间戳

Go
package main

import (
    "fmt"
    "time"
)

func main() {
    // 转换 date string to Unix timestamp
    dateString := "2021-01-01 00:00:00"

    // Parse date string (assuming UTC)
    // Go uses the reference time "2006-01-02 15:04:05" for time formatting layouts
    t, err := time.Parse("2006-01-02 15:04:05", dateString)
    if err != nil {
        fmt.Println(err)
        return
    }

    // Get Unix timestamp
    timestamp := t.Unix()
    fmt.Printf("Timestamp: %d\n", timestamp) // 1609459200
}

注意:

Go 使用参考时间 "2006-01-02 15:04:05" 作为时间格式布局。

秒请使用 time.Now().Unix(),毫秒请使用 time.Now().UnixMilli()(Go 1.17+)。

获取当前时间戳

C#
using System;

class Program
{
    static void Main()
    {
        // Get current Unix timestamp (seconds)
        DateTimeOffset now = DateTimeOffset.UtcNow;
        long timestampIn秒 = now.ToUnixTime秒();
        Console.WriteLine(timestampIn秒);

        // Get current Unix timestamp (milliseconds)
        long timestampIn毫秒 = now.ToUnixTime毫秒();
        Console.WriteLine(timestampIn毫秒);

        // Alternative method for older .NET versions
        DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
        TimeSpan timeSpan = DateTime.UtcNow - unixEpoch;
        long timestamp秒Alt = (long)timeSpan.Total秒;
        Console.WriteLine(timestamp秒Alt);
    }
}

将时间戳转换为日期

C#
using System;

class Program
{
    static void Main()
    {
        // 转换 Unix timestamp to date
        long timestamp = 1609459200; // 2021-01-01 00:00:00 UTC

        // Using DateTimeOffset (.NET Standard 2.0+)
        DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTime秒(timestamp);
        Console.WriteLine(dateTimeOffset.ToString("yyyy-MM-dd HH:mm:ss")); // UTC

        // 转换 to local time
        DateTimeOffset localTime = dateTimeOffset.ToLocalTime();
        Console.WriteLine(localTime.ToString("yyyy-MM-dd HH:mm:ss")); // Local
    }
}

将日期转换为时间戳

C#
using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        // 转换 date string to Unix timestamp
        string dateString = "2021-01-01 00:00:00";

        // Parse date string (assume UTC)
        DateTime dateTime = DateTime.ParseExact(
            dateString,
            "yyyy-MM-dd HH:mm:ss",
            CultureInfo.InvariantCulture,
            DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);

        // 转换 to timestamp
        DateTimeOffset dateTimeOffset = new DateTimeOffset(dateTime);
        long timestamp = dateTimeOffset.ToUnixTime秒();
        Console.WriteLine($"Timestamp: {timestamp}"); // 1609459200
    }
}

注意:

在 .NET Standard 2.0+ 中进行 Unix 时间戳操作时,请使用 DateTimeOffset

处理 DateTime 对象时,请注意 DateTimeKind

获取当前时间戳

Ruby
# Get current Unix timestamp (seconds)
timestamp_seconds = Time.now.to_i
puts timestamp_seconds

# Get current Unix timestamp (milliseconds)
timestamp_milliseconds = (Time.now.to_f * 1000).to_i
puts timestamp_milliseconds

# Get current UTC timestamp
require 'time'
utc_timestamp = Time.now.utc.to_i
puts utc_timestamp

将时间戳转换为日期

Ruby
require 'time'

# 转换 Unix timestamp to date
timestamp = 1609459200  # 2021-01-01 00:00:00 UTC

# Create Time object (local timezone)
time = Time.at(timestamp)
puts time.strftime('%Y-%m-%d %H:%M:%S')

# Create UTC Time object
time_utc = Time.at(timestamp).utc
puts time_utc.strftime('%Y-%m-%d %H:%M:%S')  # "2021-01-01 00:00:00"

# ISO 8601 format
puts time_utc.iso8601

将日期转换为时间戳

Ruby
require 'time'

# 转换 date string to Unix timestamp
date_string = '2021-01-01 00:00:00'

# Parse date string (local timezone)
time = Time.parse(date_string)
timestamp = time.to_i
puts timestamp

# Parse date string as UTC
time_utc = Time.parse(date_string + ' UTC')
timestamp_utc = time_utc.to_i
puts timestamp_utc  # 1609459200

# More precise parsing
require 'date'
datetime = DateTime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
timestamp_from_datetime = datetime.to_time.to_i
puts timestamp_from_datetime

注意:

Ruby 的 Time.now.to_i 返回秒。毫秒请使用 (Time.now.to_f * 1000).to_i

对于复杂的时区处理,可考虑使用 tzinfo gem。

获取当前时间戳

SQL
-- MySQL
SELECT UNIX_TIMESTAMP() AS current_timestamp;
SELECT UNIX_TIMESTAMP(NOW(3)) * 1000 AS current_timestamp_ms;

-- PostgreSQL
SELECT EXTRACT(EPOCH FROM NOW()) AS current_timestamp;
SELECT EXTRACT(EPOCH FROM NOW()) * 1000 AS current_timestamp_ms;

-- SQLite
SELECT STRFTIME('%s', 'now') AS current_timestamp;
SELECT STRFTIME('%s', 'now') * 1000 AS current_timestamp_ms;

-- SQL Server
SELECT DATEDIFF(SECOND, '1970-01-01', GETUTCDATE()) AS current_timestamp;
SELECT DATEDIFF(MILLISECOND, '1970-01-01', GETUTCDATE()) AS current_timestamp_ms;

将时间戳转换为日期

SQL
-- MySQL
SELECT FROM_UNIXTIME(1609459200) AS datetime;
SELECT FROM_UNIXTIME(1609459200, '%Y-%m-%d %H:%i:%s') AS formatted_datetime;

-- PostgreSQL
SELECT TO_TIMESTAMP(1609459200) AS datetime;
SELECT TO_CHAR(TO_TIMESTAMP(1609459200), 'YYYY-MM-DD HH24:MI:SS') AS formatted_datetime;

-- SQLite
SELECT DATETIME(1609459200, 'unixepoch') AS datetime;
SELECT STRFTIME('%Y-%m-%d %H:%M:%S', 1609459200, 'unixepoch') AS formatted_datetime;

-- SQL Server
SELECT DATEADD(SECOND, 1609459200, '1970-01-01') AS datetime;

将日期转换为时间戳

SQL
-- MySQL
SELECT UNIX_TIMESTAMP('2021-01-01 00:00:00') AS timestamp;

-- PostgreSQL
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2021-01-01 00:00:00') AS timestamp;

-- SQLite
SELECT STRFTIME('%s', '2021-01-01 00:00:00') AS timestamp;

-- SQL Server
SELECT DATEDIFF(SECOND, '1970-01-01', '2021-01-01 00:00:00') AS timestamp;

注意:

不同的数据库系统在处理时间戳时使用的函数各不相同。

在数据库中处理时间戳时,请始终考虑时区影响。

获取当前时间戳

Excel
' Get current Unix timestamp (seconds)
=INT((NOW()-DATE(1970,1,1))*86400)

' Get current Unix timestamp (milliseconds)
=INT((NOW()-DATE(1970,1,1))*86400*1000)

' Get timestamp for date in cell A1
=INT((A1-DATE(1970,1,1))*86400)

' Account for timezone (subtract 8 hours for UTC+8)
=INT((NOW()-DATE(1970,1,1)-TIME(8,0,0))*86400)

将时间戳转换为日期

Excel
' 转换 Unix timestamp (seconds) to Excel date
' Assuming A1 contains the timestamp
=DATE(1970,1,1)+A1/86400

' 转换 Unix timestamp (milliseconds) to Excel date
=DATE(1970,1,1)+A1/86400/1000

' 转换 to local timezone (add 8 hours for UTC+8)
=DATE(1970,1,1)+A1/86400+TIME(8,0,0)

' Format as text
=TEXT(DATE(1970,1,1)+A1/86400,"yyyy-mm-dd hh:mm:ss")

VBA Functions

VBA
' 转换 Unix timestamp to Excel date
Function UnixToExcelDate(UnixTimestamp As Long) As Date
    UnixToExcelDate = Date增加("s", UnixTimestamp, DateSerial(1970, 1, 1))
End Function

' 转换 Excel date to Unix timestamp
Function ExcelDateToUnix(ExcelDate As Date) As Long
    ExcelDateToUnix = DateDiff("s", DateSerial(1970, 1, 1), ExcelDate)
End Function

' Get current Unix timestamp
Function GetCurrentUnixTimestamp() As Long
    GetCurrentUnixTimestamp = DateDiff("s", DateSerial(1970, 1, 1), Now)
End Function

' Usage examples:
' =UnixToExcelDate(1609459200)
' =ExcelDateToUnix(NOW())
' =GetCurrentUnixTimestamp()

注意:

Excel stores dates as serial numbers, with 1970-01-01 being day 25569 in the 1900 date system.

Always consider timezone conversions when working with timestamps in Excel.

VBA functions provide more flexibility for complex timestamp operations.