日期格式处理篇

在编程的时候经常会遇到unix时间戳,那么就在这里总结一下unix时间戳常用的处理,首先应该明白是么是unix时间戳,unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z,一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。在大多数的UNIX系统中UNIX时间戳存储为32位,这样会引发2038年问题或Y2038。

1.sql语句中将日期格式转化为unix时间戳 select DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())

 sql语句中将unix时间戳转化为日期格式 DATEADD(hh,8,DATEADD(s,track_beginTM,'19700101')),unix时间戳转化为日期格式后因为时差的原因需在小时部分加8

因为,数据库中毫秒数存的是伦敦的格林威治时间,格林威治时间与北京相差时区所以要加八个小时。

2.编程中获取unix时间戳

 

Java time
JavaScript Math.round(new Date().getTime()/1000) 
getTime()返回数值的单位是毫秒
Microsoft .NET / C# epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000
MySQL SELECT unix_timestamp(now())
Perl time
PHP time()
PostgreSQL SELECT extract(epoch FROM now())
Python 先 import time 然后 time.time()
Ruby 获取Unix时间戳:Time.now 或 Time.new 
显示Unix时间戳:Time.now.to_i
SQL Server SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())
Unix / Linux date +%s
VBScript / ASP DateDiff("s", "01/01/1970 00:00:00", Now())
其他操作系统 
(如果Perl被安装在系统中)
命令行状态:perl -e "print time"

 3.js中毫秒数(unix时间)转化为普通的 年月日格式,得到毫秒数的小时部分。

两个unix时间(毫秒日期时间)差.getHours() 得到的是时差的 1970-01-01 08:00:00为基准的时差。

posted @ 2012-06-14 03:10  tangrongyue  Views(405)  Comments(0Edit  收藏  举报