Linux 时间戳通常指的是 Unix 时间戳,即自 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数。这个时间戳在许多 Unix 系统和类 Unix 系统(包括 Linux)中广泛使用。我们日常工作学习中也是很常用的。
但是很多刚学习的小伙伴对这一串数字不知道如何理解,今天我们就来简单聊聊 Unix 时间戳,相信看完这篇简短的文章,你就可以马上知道这个时间戳的含义和用处啦。
一、Unix 时间戳表示方法
Unix 时间戳是一个整数,表示自 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数。可以是正数(1970 年之后)或负数(1970 年之前),所以他是一个累计数。
二、时间戳表示方式
通常,Unix 时间戳可以以整数形式表示,也可以转换为人类可读的日期时间格式。例如,Unix 时间戳为 1612000000 表示 2021 年 1 月 30 日 08:00:00 UTC。
三、获取时间戳
Linux 系统提供了多种方式来获取当前时间戳:
`date` 命令:可以通过 `date +%s` 获取当前的 Unix 时间戳。
编程语言的时间函数:如 Python 的 `time.time()`、C 的 `time()` 函数等可以获取当前 Unix 时间戳。
具体如下图:
Swift | NSDate().timeIntervalSince1970 |
Go | import ( |
"time" | |
) | |
int64(time.Now().Unix()) | |
Java | // pure java |
System.currentTimeMillis() / 1000 | |
// joda java | |
DateTime.now().getMillis() / 1000 | |
// java >= 8 | |
Instant.now().getEpochSecond() | |
C | #include |
// ... | |
struct timeval tv; | |
gettimeofday(&tv, NULL); | |
// 秒: tv.tv_sec | |
// 毫秒: tv.tv_sec * 1000LL + tv.tv_usec / 1000 | |
JavaScript | Math.round(new Date() / 1000) |
Objective-C | [[NSDate date] timeIntervalSince1970] |
MySQL | SELECT unix_timestamp(now()) |
SQLite | SELECT strftime('%s', 'now') |
Erlang | calendar:datetime_to_gregorian_seconds(calendar:universal_time())-719528*24*3600. |
PHP | |
// pure php | |
time(); | |
// carbon php | |
use Carbon\Carbon; | |
Carbon::now()->timestamp; | |
Python | import time |
time.time() | |
import arrow | |
arrow.utcnow().timestamp | |
Ruby | Time.now.to_i |
Shell | date +%s |
Groovy | (new Date().time / 1000).longValue() |
Lua | os.time() |
.NET/C# | DateTimeOffset.UtcNow.ToUnixTimeSeconds(); |
Dart | (new DateTime.now().millisecondsSinceEpoch / 1000).truncate() |
四、时间戳转换
在日常工作学习中,我们需要将时间戳从一种时间表示形式(如日期对象)到另一种形式(如时间戳)的转换。
下面介绍一下一些常用编程语言的转换方法:
JavaScript | // 获取当前时间戳(毫秒级) var timestamp = Date.now(); // 将时间戳转换为日期对象 var dateObject = new Date(timestamp); // 将日期对象转换为时间戳 var newTimestamp = dateObject.getTime(); |
Python | from datetime import datetime # 获取当前时间戳(秒级) timestamp = datetime.timestamp(datetime.now()) # 将时间戳转换为日期对象 date_object = datetime.fromtimestamp(timestamp) # 将日期对象转换为时间戳 new_timestamp = datetime.timestamp(date_object) |
Java | import java.util.Date; // 获取当前时间戳(毫秒级) long timestamp = System.currentTimeMillis(); // 将时间戳转换为日期对象 Date dateObject = new Date(timestamp); // 将日期对象转换为时间戳 long newTimestamp = dateObject.getTime(); |
C# | // 获取当前时间戳(秒级) long timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); // 将时间戳转换为日期对象 DateTimeOffset dateObject = DateTimeOffset.FromUnixTimeSeconds(timestamp); // 将日期对象转换为时间戳 long newTimestamp = dateObject.ToUnixTimeSeconds(); |
PHP | // 获取当前时间戳(秒级) $timestamp = time(); // 将时间戳转换为日期对象 $dateObject = date("Y-m-d H:i:s", $timestamp); // 将日期对象转换为时间戳 $newTimestamp = strtotime($dateObject); |
SQL | // UNIX时间戳转换为日期用函数: FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); // 日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() select UNIX_TIMESTAMP('2006-11-04 12:23:00'); |
SHELL | // 获取当前时间戳 currentStamp=`date +%s` // 将标准时间转换成时间戳 standard="2016-08-03 14:13:23" stamp=`date -d "$standardTime" +%s` // 将时间戳转换成标准时间 stamp=1287331200 standard=`date -d @"$stamp" +"%Y-%m-%d %H:%M:%S"` |
五、重要用途
Unix 时间戳在计算机系统中有许多重要用途,包括:
- 记录文件的创建时间、修改时间等元数据。
- 在系统日志中记录事件的发生时间。
- 在网络通信中用于时间同步。
- 在编程中用于计算时间间隔、定时任务等。
六、时间戳的问题和注意事项
- 时间戳的精度通常是秒级的,如果需要更精确的时间,可能需要使用毫秒级别的时间戳。
- 时间戳是相对于 UTC 时间的,如果需要转换为本地时间,需要考虑时区的影响。
- 在处理时间戳时,要注意处理溢出、格式转换和时区转换等问题。
掌握 Linux 时间戳的知识对于开发和系统管理非常重要,能够帮助准确记录和处理时间相关的信息。
猜你喜欢
- 1月前(郭富城热舞劲歌演唱会)郭富城年度压轴《新濠尊属系列郭富城梦幻舞林演唱会2023》
- 1月前(瑞虎7plus2021款)重塑10万级SUV价值标杆,全新一代瑞虎7PLUS冠军版给你惊喜
- 1月前(福朋喜来登酒店宴会厅)福朋喜来登品牌亮相北部湾城市群 阳江中心福朋喜来登酒店开业
- 1月前(新西兰“空降”上海:新西兰旅游局邀请你来“玩真的”!)新西兰“空降”上海:新西兰旅游局邀请你来“玩真的”!
- 1月前(澳涞坞是什么)从最美山庄到世界舞台:澳涞山庄见证世界十佳旅居城市评选
- 1月前(天津四季酒店开业时间)天津四季酒店邀你开启灿烂暑假
- 1月前(星级饭店的发展困境)星级饭店转型之路:从市场逻辑到行业实践的深度探索
- 1月前(大黄山景区高质量发展联盟成立多少年)大黄山景区高质量发展联盟成立
- 1月前(曹妃甸美仑华府哪个楼层好)曹妃甸新城教育经济新引擎启动—美仑国际酒店盛大开业
- 1月前(芜宣机场国际航班)新华丝路:芜宣机场开通至越南首都河内的国际货运航线
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章