浅谈 Unix Timestamp 时间戳

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 时间戳。

具体如下图:

SwiftNSDate().timeIntervalSince1970
Goimport (
  "time"
)
int64(time.Now().Unix())
Java// pure java
System.currentTimeMillis() / 1000
// joda java
DateTime.now().getMillis() / 1000
// java >= 8
Instant.now().getEpochSecond()
C#include <sys/time.h>
 
// ...
struct timeval tv;
gettimeofday(&tv, NULL);
// 秒: tv.tv_sec
// 毫秒: tv.tv_sec * 1000LL + tv.tv_usec / 1000
JavaScriptMath.round(new Date() / 1000)
Objective-C[[NSDate date] timeIntervalSince1970]
MySQLSELECT unix_timestamp(now())
SQLiteSELECT strftime('%s', 'now')
Erlangcalendar:datetime_to_gregorian_seconds(calendar:universal_time())-719528*24*3600.
PHP<?php
// pure php
time();
<?php
// carbon php
use Carbon\Carbon;
Carbon::now()->timestamp;
Pythonimport time
time.time()
import arrow
arrow.utcnow().timestamp
RubyTime.now.to_i
Shelldate +%s
Groovy(new Date().time / 1000).longValue()
Luaos.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();
Pythonfrom datetime import datetime

# 获取当前时间戳(秒级)
timestamp = datetime.timestamp(datetime.now())

# 将时间戳转换为日期对象
date_object = datetime.fromtimestamp(timestamp)

# 将日期对象转换为时间戳
new_timestamp = datetime.timestamp(date_object)
Javaimport 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 时间戳的知识对于开发和系统管理非常重要,能够帮助准确记录和处理时间相关的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

-代码分享-

归并排序的递归函数 void D_MereSort(int a[], int left, int right, int* tmp) { //left和right分别为递归区间的左右端点的下标 //把要归并的两边的区间递归到各只有1个元素就停 if (left > right) return; //mid为递归区间中间下标 int mid (left right) / 2; //递归…

软件工程知识梳理2-需求分析

需求分析时软件定义的最后一个阶段&#xff0c;它的基本任务时准确回答系统必须做什么的问题。 输出&#xff1a;本阶段必须的输出时软件需求规格说明书。 角色&#xff1a;需求分析员 参与者&#xff1a;用户、需求分析员 需求分析遵循的准则&#xff1a; 必须理解并描述问…

【阿里巴巴】【淘天集团天猫超市食品生鲜供应链】技术线-高级Java研发工程师-供应链计划

所属部门:淘天集团&#xff5c;学历:本科 | 工作年限: 3 年 职位描述 负责淘天集团天猫超市&食品生鲜供应链计划系统研发&#xff0c;包括经营计划&#xff0c;需求计划&#xff0c;补货计划&#xff0c;调拨计划&#xff0c;库存健康&#xff0c;资源计划等多个核心业务负…

各品牌主板快速启动热键对照表及CMOS进入方法

各品牌主板快速启动热键对照表 主板品牌 启动按键 笔记本品牌 启动按键 主机品牌 启动按键 华硕主板 F8 联想笔记本 F12 联想台式机 F12 技嘉主板 F12 宏碁笔记本 F12 惠普台式机 F12 微星主板 F11 华硕笔记本 ESC 宏碁台式机 F12 梅捷主板 F9 惠普笔…

Linux安装docker以及docker安装软件

1.docker安装 依次运行添加yum源 # 更新yum软件 yum update# 安装epel-release yum install -y epel-release# 清理 yum clean all# 列出所有可用软件包 yum list安装并运行docker yum install -y docker-io systemctl start docker检查安装结果docker info 2.docker安装Rabb…

「优选算法刷题」:寻找峰值

一、题目 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复…

elementui 开始结束时间可以选择同一天不同时间段

先在main.js中导入 import moment from moment <el-row><el-col :span"12"><el-form-item label"考试开始时间" prop"startTime"><el-date-picker v-model"shiJuanXinXiForm.startTime" style"width: 100…

异步解耦之RabbitMQ(二)__RabbitMQ架构及交换机

异步解耦之RabbitMQ(一) RabbitMQ架构 RabbitMQ是一个基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议的消息代理中间件&#xff0c;它通过交换机和队列实现消息的路由和分发。以下是RabbitMQ的架构图&#xff1a; Producer&#xff08;生产者&#…

孪生卷积神经网络(Siamese Convolutional Neural Network)的设计思路

孪生卷积神经网络&#xff08;Siamese Convolutional Neural Network&#xff09;是一种特殊类型的卷积神经网络&#xff0c;主要用于处理需要成对比较的数据&#xff0c;例如判断两个输入是否相似。 以下是孪生卷积神经网络的基本结构&#xff1a; 输入层&#xff1a;这一层…

019代码结构

什么是顺序结构&#xff1f; 什么是选择结构&#xff1f; boolean flag true; // 结果为true会执行大括号内的代码&#xff0c;否则不执行直接跳过 if(flag true){System.out.println("flag为真"); } 双if选择结构 if(flag true){// 结果为true会执行大括号内的代…

python的Flask生产环境部署说明照做成功

最近刚好在我的Linux服务器上部署一个Web服务, 使用了python的Flask框架, 因此本文主要介绍flask在linux环境上的部署。 Flask 是一个轻量级的 Python Web 框架&#xff0c;非常适合快速开发小型到中型的 Web 应用。然而&#xff0c;Flask 自带的服务器通常是用于开发目的&…

【力扣经典面试题】121. 买卖股票的最佳时机

题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最…

EasyCode自动生成CRUD模板(Springboot整合Mybatis)--带完整注解和分页

1. dao 层&#xff1a; ##定义初始变量 #set($tableName $tool.append($tableInfo.name, "Dao")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/dao")…

Vue3-Composition-API(二)

一、computed函数使用 1.computed 在前面我们讲解过计算属性computed&#xff1a;当我们的某些属性是依赖其他状态时&#xff0c;我们可以使用计算属性来处理 在前面的Options API中&#xff0c;我们是使用computed选项来完成的&#xff1b; 在Composition API中&#xff0c…

有哪些好用的洗地机推荐?洗地机品牌推荐

在如今快节奏的生活中&#xff0c;人们对于家居清洁的需求也越来越高。洗地机无疑成为了很多家庭清洁的得力助手。然而&#xff0c;在众多品牌和型号中&#xff0c;到底哪款洗地机值得入手呢&#xff0c;这可能是很多人都会发出的疑问&#xff0c;下面&#xff0c;我们接下来一…

Blazor快速开发框架Known-更换数据库

本文介绍如何更换框架默认的数据库&#xff0c;下面以MySQL数据库为例&#xff1a; 操作步骤 双击KIMS.Shared项目&#xff0c;打开项目文件&#xff0c;引用MySqlConnector数据库访问包 <PackageReference Include"MySqlConnector" Version"2.3.3" …

代码随想录算法训练营第三十六天 | 435. 无重叠区间、763.划分字母区间、56. 合并区间

题目链接&#xff1a;435. 无重叠区间 文章讲解&#xff1a;代码随想录 435. 无重叠区间讲解 视频讲解&#xff1a;贪心算法&#xff0c;依然是判断重叠区间 | LeetCode&#xff1a;435.无重叠区间 思路和解法 题目&#xff1a; 给定一个区间的集合 intervals &#xff0c;…

JDBC - 结构优化1

JDBC - 结构优化1 文章目录 JDBC - 结构优化1三层架构1 什么是三层架构2 三层架构项目搭建 结构优化1 - 学生信息管理1 封装工具类2 ORM3 DAO 三层架构 1 什么是三层架构 **三层架构&#xff1a;**将程序划分为表示层, 业务逻辑层, 数据访问层三层&#xff0c;各层之间采用接…

vit细粒度图像分类(七)TBNet学习笔记

1.摘要 细粒度鸟类图像识别致力于实现鸟类图像的准确分类&#xff0c;是机器人视觉跟踪中的一项基础性工作。鉴于濒危鸟类的监测和保护对保护濒危鸟类具有重要意义&#xff0c;需要采用自动化方法来促进鸟类的监测。在这项工作中&#xff0c;我们提出了一种新的基于机器人视觉…

代码随想录算法训练营29期|day36任务以及具体安排

第八章 贪心算法 part05 435. 无重叠区间 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a,b)-> {return Integer.compare(a[0],b[0]);});if(intervals.length 1) return 0;int result 0;for(int i 1 ; i < interva…