Unix时间戳(Unix timestamp) → 北京时间相互转换

本文介绍Linux环境下时间戳与标准时间的互相转换方法,包括不同编程语言中时间戳的获取和转换技巧。
部署运行你感兴趣的模型镜像

在分布式系统中经常有linux时间戳作为标记,linux时间与北京时间相互转换变得非常重要,可以快速的定位时间和问题。

关于时间格式的解释
UTC  (Universal Time Coordinated,UTC)世界协调时间
CST  (China Standard Time UTC+8:00)中国沿海时间(北京时间)
GMT  (Greenwich Mean Time)格林威治标准时间:

1、分别以标准格式和时间戳来显示当前时间
[root@linux ~]# date    
2010年 08月 10日 星期二 03:39:21 CST   
[root@linux ~]# date +%s 
1281382775
2、显示指定时间的时间戳
[root@linux ~]# date -d "2010-07-20 10:25:30" +%s    
1279592730
 
3、将时间戳转换为标准时间格式
方法1:使用date命令
[root@linux ~]# date -d "@1279592730" 
 2010年 07月 20日 星期二 10:25:30 CST
[root@linux ~]# date -d "1970-01-01 utc 1279592730 seconds" 
 2010年 07月 20日 星期二 10:25:30 CST

在线的转换工具地址为:http://tool.chinaz.com/Tools/unixtime.aspx

如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?
Javatime
JavaScriptMath.round(new Date().getTime()/1000)
getTime()返回数值的单位是毫秒
Microsoft .NET / C#epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000
MySQLSELECT unix_timestamp(now())
Perltime
PHPtime()
PostgreSQLSELECT extract(epoch FROM now())
Python先 import time 然后 time.time()
Ruby获取Unix时间戳:Time.now 或 Time.new
显示Unix时间戳:Time.now.to_i
SQL ServerSELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())
Unix / Linuxdate +%s
VBScript / ASPDateDiff("s", "01/01/1970 00:00:00", Now())
其他操作系统
(如果Perl被安装在系统中)
命令行状态:perl -e "print time"
如何在不同编程语言中实现Unix时间戳( Unix timestamp) → 普通时间?
JavaString date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(Unix timestamp * 1000))
JavaScript先 var unixTimestamp = new Date(Unix timestamp * 1000) 然后commonTime = unixTimestamp.toLocaleString()
Linuxdate -d @Unix timestamp
MySQLfrom_unixtime(Unix timestamp)
Perl先 my $time = Unix timestamp 然后 my ($sec, $min, $hour, $day, $month, $year) = (localtime($time))[0,1,2,3,4,5,6]
PHPdate('r', Unix timestamp)
PostgreSQLSELECT TIMESTAMP WITH TIME ZONE 'epoch' + Unix timestamp) * INTERVAL '1 second';
Python先 import time 然后 time.gmtime(Unix timestamp)
RubyTime.at(Unix timestamp)
SQL ServerDATEADD(s, Unix timestamp, '1970-01-01 00:00:00')
VBScript / ASPDateAdd("s", Unix timestamp, "01/01/1970 00:00:00")
其他操作系统
(如果Perl被安装在系统中)
命令行状态:perl -e "print scalar(localtime(Unix timestamp))"
如何在不同编程语言中实现普通时间 → Unix时间戳( Unix timestamp)?
Javalong epoch = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00");
JavaScriptvar commonTime = new Date(Date.UTC(yearmonth - 1, dayhour,minutesecond))
MySQLSELECT unix_timestamp(time)
时间格式: YYYY-MM-DD HH:MM:SS 或 YYMMDD 或 YYYYMMDD
Perl先 use Time::Local 然后 my $time = timelocal($sec, $min, $hour, $day, $month, $year);
PHPmktime(hourminuteseconddaymonthyear)
PostgreSQLSELECT extract(epoch FROM date('YYYY-MM-DD HH:MM:SS'));
Python先 import time 然后 int(time.mktime(time.strptime('YYYY-MM-DD HH:MM:SS', '%Y-%m-%d %H:%M:%S')))
RubyTime.local(yearmonthdayhourminutesecond)
SQL ServerSELECT DATEDIFF(s, '1970-01-01 00:00:00', time)
Unix / Linuxdate +%s -d"Jan 1, 1970 00:00:01"
VBScript / ASPDateDiff("s", "01/01/1970 00:00:00", time)

参考资料:

http://tool.chinaz.com/Tools/unixtime.aspx

您可能感兴趣的与本文相关的镜像

Dify

Dify

AI应用
Agent编排

Dify 是一款开源的大语言模型(LLM)应用开发平台,它结合了 后端即服务(Backend as a Service) 和LLMOps 的理念,让开发者能快速、高效地构建和部署生产级的生成式AI应用。 它提供了包含模型兼容支持、Prompt 编排界面、RAG 引擎、Agent 框架、工作流编排等核心技术栈,并且提供了易用的界面和API,让技术和非技术人员都能参与到AI应用的开发过程中

### 将Unix时间戳转换为东八区的北京时间 在编程中,可以使用多种方法将Unix时间戳转换为东八区的北京时间。以下是几种常见的实现方式: #### 方法一:Python中的`datetime`模块 可以通过`datetime`模块来完成这一操作。具体代码如下所示: ```python import datetime def unix_to_beijing(unix_timestamp): utc_time = datetime.datetime.utcfromtimestamp(unix_timestamp) # UTC 时间 beijing_time = utc_time + datetime.timedelta(hours=8) # 加上8小时得到北京时间 return beijing_time.strftime('%Y-%m-%d %H:%M:%S') # 格式化输出 unix_timestamp = 1672502400 # 示例时间戳 print(unix_to_beijing(unix_timestamp)) ``` 上述代码实现了从Unix时间戳到北京标准时间的转换[^1]。 --- #### 方法二:SQL查询语句 如果是在数据库环境中处理数据,则可以直接使用SQL内置函数进行转换。例如,在MySQL中可执行以下命令: ```sql SELECT FROM_UNIXTIME(UNIX_TIMESTAMP, '%Y-%m-%d %H:%i:%s') AS Beijing_Time; -- 假设输入的时间戳已经考虑到了UTC+8偏移量 ``` 或者更精确的方式是手动调整时差: ```sql SELECT DATE_ADD(FROM_UNIXTIME(UNIX_TIMESTAMP), INTERVAL 8 HOUR); ``` 这里利用了`FROM_UNIXTIME()`函数配合`DATE_ADD()`来进行最终的结果展示[^2]。 --- #### 方法三:C语言结合单片机开发环境下的解决方案 对于嵌入式系统而言,可能需要依赖硬件资源如定时器中断服务程序等手段同步实时钟(RTC),再基于此计算出相应的绝对时刻表示形式——即所谓的“Unix epoch”。之后按照同样的逻辑增加固定数值(这里是28800秒代表八个整点),从而得出对应于中国本土计时体系下确切表达版本的数据串流结构体成员变量赋初值过程描述如下伪码样例所见一般情况即可满足需求[^3]: ```c #include <stdio.h> #include <time.h> void convert_unix_to_cst(long long timestamp){ struct tm *local_tm; local_tm = gmtime(&timestamp); // Convert to GMT structure /* Add offset for CST */ time_t adjusted_time = mktime(local_tm)+28800; char buffer [80]; strftime(buffer,80,"%F %T",localtime(&adjusted_time)); printf("%s\n",buffer); } int main(){ long long ts_example = 1672502400LL; convert_unix_to_cst(ts_example); } ``` --- #### 方法四:Excel公式的应用场合 当面对电子表格类文件批量加工任务时,也可以借助Microsoft Office套件里的功能快速达成目标效果。假设原始数据位于单元格A1处的话,那么完整的公式应当写成这样子的样子[^5]: ``` =(A1+8*3600)/86400+70*365+LEAP_YEARS_COUNT+EXTRA_LEAPS_ADJUSTMENT ``` 其中各个组成部分的意义分别解释如下: - `(A1+8*3600)` 表达的是考虑到本地相对于协调世界时时区差异后的总秒数; - `/86400` 把上面那个结果除以每日总共拥有的秒钟数目变换成为日单位计量长度的形式; - `+70*365` 添加自公元纪元初始至指定参照年份之间累计经历过的全部自然年度数量乘以其各自含括的日历周期长短之积; - `+LEAP_YEARS_COUNT` 进一步计入其间额外存在的跨世纪特殊例外情形所带来的累积增量部分贡献份额比例关系影响因素考量进去; - `+EXTRA_LEAPS_ADJUSTMENT` 则是为了修正某些特定历史遗留问题而特别预留出来的一项微调参数设置选项位置留白备用而已啦! --- ### 注意事项 需要注意的是,《Unix Programmer's Manual》最初定义的起始时间为1971年而非普遍接受的标准1970年1月1日零点[^4]。不过现代计算机科学领域广泛采纳后者作为正式规范遵循沿用至今未变。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值