工具介绍
工具简介
Unix 时间戳(Unix timestamp),是一种时间表示方式,它表示从格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒起到当前时间的总秒数。
Unix 时间戳不仅被使用在 Unix 系统、类 Unix 系统中,也在许多其他操作系统中被广泛采用。因此,作为技术工程师,需要对时间戳的概念及相关用法做到心中有数,才能在使用时间戳时游刃有余。
说明:在不同时期,Unix 时间戳有时候也被称为 Unix 时间、POSIX 时间。
主流编程语言及操作系统获取 Unix 时间戳的方法
下面列出了目前主流编程语言及操作系统中获取 Unix 时间戳的方法,供参考。
1、Python
import time
# 获取当前时间戳(秒,浮点数)
timestamp = time.time()
print(timestamp) # 输出示例: 1710705600.123456
# 获取整数秒
timestamp_int = int(time.time())
print(timestamp_int) # 输出示例: 1710705600
2、JavaScript
// 获取当前时间戳(毫秒)
const timestamp = Date.now();
console.log(timestamp); // 输出示例: 1710705600123
// 获取秒(转换为整数)
const timestampSeconds = Math.floor(Date.now() / 1000);
console.log(timestampSeconds); // 输出示例: 1710705600
3、Java
import java.time.Instant;
public class Main {
public static void main(String[] args) {
// 获取当前时间戳(秒)
long timestamp = Instant.now().getEpochSecond();
System.out.println(timestamp); // 输出示例: 1710705600
// 获取毫秒
long timestampMillis = Instant.now().toEpochMilli();
System.out.println(timestampMillis); // 输出示例: 1710705600123
}
}
4、C Lang
#include <stdio.h>
#include <time.h>
int main() {
// 获取当前时间戳(秒)
time_t timestamp = time(NULL);
printf("%ld\n", timestamp); // 输出示例: 1710705600
return 0;
}
5、C++
#include <iostream>
#include <chrono>
int main() {
// 获取当前时间戳(秒)
auto timestamp = std::chrono::duration_cast<std::chrono::seconds>(
std::chrono::system_clock::now().time_since_epoch()
).count();
std::cout << timestamp << std::endl; // 输出示例: 1710705600
// 获取毫秒
auto timestampMillis = std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch()
).count();
std::cout << timestampMillis << std::endl; // 输出示例: 1710705600123
return 0;
}
6、PHP
<?php
// 获取当前时间戳(秒)
$timestamp = time();
echo $timestamp; // 输出示例: 1710705600
// 或者使用 microtime 获取微秒
$microtime = microtime(true);
echo $microtime; // 输出示例: 1710705600.123456
?>
7、.NET(C#)
using System;
class Program
{
static void Main()
{
// 获取当前时间戳(秒)
long timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
Console.WriteLine(timestamp); // 输出示例: 1710705600
// 获取毫秒
long timestampMillis = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
Console.WriteLine(timestampMillis); // 输出示例: 1710705600123
}
}
8、Golang
package main
import (
"fmt"
"time"
)
func main() {
// 获取当前时间戳(秒)
timestamp := time.Now().Unix()
fmt.Println(timestamp) // 输出示例: 1710705600
// 获取纳秒
timestampNano := time.Now().UnixNano()
fmt.Println(timestampNano) // 输出示例: 1710705600123456789
}
9、Rust
use std::time::{SystemTime, UNIX_EPOCH};
fn main() {
// 获取当前时间戳(秒)
let timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs();
println!("{}", timestamp); // 输出示例: 1710705600
// 获取毫秒
let timestamp_millis = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_millis();
println!("{}", timestamp_millis); // 输出示例: 1710705600123
}
10、Ruby
# 获取当前时间戳(秒,浮点数)
timestamp = Time.now.to_f
puts timestamp # 输出示例: 1710705600.123456
# 获取整数秒
timestamp_int = Time.now.to_i
puts timestamp_int # 输出示例: 1710705600
表格总结如下:
编程语言 | 获取时间戳的方法 |
---|---|
Java | (int) (System.currentTimeMillis() / 1000) |
JavaScript | Math.round(new Date().getTime()/1000) |
.NET / C# | (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds |
Golang | int32(time.Now().Unix()) |
PHP | time() |
Perl | time |
Python | time.time() |
Ruby | Time.now.to_i |
Swift | NSDate().timeIntervalSince1970 |
MySQL | SELECT unix_timestamp(now()) |
PostgreSQL | SELECT extract(epoch FROM now()) |
SQL Server | SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE()) |
Unix / Linux / macos | date +%s |
感谢使用,希望本工具对你有一定的帮助。