时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数,也被称为 Unix 时间戳(Unix Timestamp)。

Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数
Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。

如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?

Java

time

JavaScript

Math.round(new Date().getTime()/1000)

getTime()返回数值的单位是毫秒。因为new Date().getTime()得到的是millisecond,需要除以1000

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"

如何在不同编程语言中实现Unix时间戳(Unix timestamp) → 普通时间?

Java

String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(Unix timestamp * 1000))

java.util.Date的入参是millisecond。而Unix timestamp的单位是s

JavaScript

先 var unixTimestamp = new Date(Unix timestamp * 1000) 然后 commonTime = unixTimestamp.toLocaleString()

js中Date需要的入参是millisecond

Linux

date -d @Unix timestamp

MySQL

from_unixtime(Unix timestamp)

Perl

先 my $time = Unix timestamp 然后 my ($sec, $min, $hour, $day, $month, $year) = (localtime($time))[0,1,2,3,4,5,6]

PHP

date('r', Unix timestamp)

PostgreSQL

SELECT TIMESTAMP WITH TIME ZONE 'epoch' + Unix timestamp) * INTERVAL '1 second';

Python

先 import time 然后 time.gmtime(Unix timestamp)

Ruby

Time.at(Unix timestamp)

SQL Server

DATEADD(s, Unix timestamp, '1970-01-01 00:00:00')

VBScript / ASP

DateAdd("s", Unix timestamp, "01/01/1970 00:00:00")

其他操作系统

(如果Perl被安装在系统中)

命令行状态:perl -e "print scalar(localtime(Unix timestamp))"

如何在不同编程语言中实现普通时间 → Unix时间戳(Unix timestamp)?

 

Java


Date date = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00");
long epoch = date.getTime();



这个地方是不是需要除以1000转换成s呢?

JavaScript

var commonTime = new Date(Date.UTC(year, month - 1, day, hour, minute, second))

这个地方是不是需要除以1000转换成s呢?

MySQL

SELECT unix_timestamp(time)

时间格式: YYYY-MM-DD HH:MM:SS 或 YYMMDD 或 YYYYMMDD

Perl

先 use Time::Local 然后 my $time = timelocal($sec, $min, $hour, $day, $month, $year);

PHP

mktime(hour, minute, second, day, month, year)

PostgreSQL

SELECT 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')))

Ruby

Time.local(year, month, day, hour, minute, second)

SQL Server

SELECT DATEDIFF(s, '1970-01-01 00:00:00', time)

Unix / Linux

date +%s -d"Jan 1, 1970 00:00:01"

VBScript / ASP

DateDiff("s", "01/01/1970 00:00:00", time)



var oldTime = (new Date("2011/11/11 20:10:10")).getTime(); //得到毫秒数
var newTime = new Date(oldTime); //就得到普通的时间了



直接传入毫秒数作为参数,给Date对象就可以得到普通的时间了,然后通过getHours,getFullYear等方法获取年月日,时分秒了

 

创建一个日期对象:



var objDate=new Date([arguments list]);



参数形式有以下5种:

1)new Date("month dd,yyyy hh:mm:ss");
2)new Date("month dd,yyyy");
3)new Date(yyyy,mth,dd,hh,mm,ss);

在程序中我使用的第三种初始化方法,总是显示格式化的参数不正确,仔细看了一下一定要是整型的才可以,我传递的是字符串

4)new Date(yyyy,mth,dd);
5)new Date(ms);

需要注意最后一种形式,参数表示的是需要创建的时间和 GMT时间1970年1月1日之间相差的毫秒数。各种函数的含义如下:

month:用英文 表示月份名称,从January到December

mth:用整数表示月份,从(1月)到11(12月)

dd:表示一个 月中的第几天,从1到31

yyyy:四位数表示的年份

hh:小时数,从0(午夜)到23(晚11点)

mm: 分钟数,从0到59的整数

ss:秒数,从0到59的整数

ms:毫秒数,为大于等于0的整数

如:



new Date("January 12,2006 22:19:35"); 
new Date("January 12,2006"); 
new Date(2006,0,12,22,19,35); 
new Date(2006,0,12); 
new Date(1137075575000);



上面的各种创建形式都表示2006 年1月12日这一天。