2016-11-05 16:49:37 TeckerYu 阅读数 2069

UNIX时间戳与time()算时间差

在mysql查询中我们经常会遇到UNIX时间戳的转换还有计算经过时间的问题,下面的我的一种解决方案

需要用到的函数

getdate(unix数字时间戳)

将时间戳数字转化为键值数组,使得我们可以轻易地分离想要进行判断的时间

time()

方便获取现在的时间

现假设从mysql中获取到时间戳为$result

            $date_time_array = getdate($result);
            $hour = $date_time_array['hours'];
            $min = $date_time_array['minutes'];
            $second = $date_time_array['seconds'];
            $month = $date_time_array['mon'];
            $day = $date_time_array['mday'];
            $year = $date_time_array['year'];
            $now_time_array = getdate(time());
            if($year<$now_time_array['year'])
            {
                $diff = $now_time_array['year']-$year;
                $timediff = $diff.'年前'; 
            }
            else if($month<$now_time_array['mon'])
            {
                $diff = $now_time_array['mon']-$month;
                $timediff = $diff.'月前';
            }
            else if($day<$now_time_array['mday'])
            {
                $diff = $now_time_array['mday']-$day;
                $timediff = $diff.'天前';
            }
            else if($hour<$now_time_array['hours'])
            {
                $diff = $now_time_array['hours']-$hour;
                $timediff = $diff.'小时前';
            }
            else if($min<$now_time_array['minutes'])
            {
                $diff = $now_time_array['minutes']-$min;
                $timediff = $diff.'分钟前';
            }
            else if($second<$now_time_array['seconds'])
            {
                $diff = $now_time_array['seconds']-$second;
                $timediff = $diff.'秒前';
            }

循环嵌套顺序判断年月日时分秒,找到第一个不同项相减,就能够计算出数据的距今时间

2018-12-25 11:35:43 CrayonK 阅读数 523

        unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

        UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z.

        一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。

        在大多数的UNIX系统中UNIX时间戳存储为32位,这样会引发2038年问题或Y2038。

java获取时间戳的三种方式:

        #方法一:

            System.currentTimeMillis();

        #方法二:

            Calendar.getInstance().getTimeInMillis()

        #方法三:

            new Date().getTime()

Python获取时间戳的方式:

            time.time()

mysql获取时间戳的方式:

            SELECT UNIX_TIMESTAMP(NOW())

 

2016-08-31 18:30:53 u013748736 阅读数 3063

最近在一家公司实习所做的项目后台是用php写的,同事喜欢用unix时间戳来存储时间,刚开始觉得很不直观,倒不如直接用date来存储,直观又简洁。但是有经验的人做出的决定肯定是有原因的。

什么是unix时间戳?

unix时间戳是从1970年1月1日0时0分0秒开始计算秒数的一个数值,在最近几年里,在数据库中存放的应该都是以1开头的一串11位数字,所以,刚好在mysql中以int(11)型存储。

为什么要用unix时间戳?

在现在的系统中经常遇到跨数据库的应用开发,在数据库系统中不同的数据库对与时间类型却有不同解释,比如ORACLE的date和MYSQL里面的date就不能直接兼容转换,数据方面还可以使用数据迁移工具进行转换,但是对与应用来说那就是灾难。
为了实现垮平台在应用系统中记录时间的时候我们就可以使用记录UNIX时间戳的方法做到垮平台性。现在大多数的语言java、PHP、Perl等都支持直接取UNIX时间戳,将需要记录的时间记录为UNIX时间戳,这样就可以不同的数据库系统中的垮平台性,对与时间的操作只要对时间戳操作就行了。

在mysql中将查询结果为unix时间戳转换为date格式

select from_unixtime(c_order_time)order_time,from_unixtime(c_over_time)over_time from t_student
查询结果如下:
这里写图片描述

关于from_unixtime

FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)是MySQL里的时间函数
,unix_timestamp可以是字段名,也可以直接是Unix 时间戳,format主要是将返回值格式化。
若format已经给出,则结果的格式是根据format 字符串而定。
返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。
根据format字符串格式化date值。
下列修饰符可以被用在format字符串中:
%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。

那将日期转换为unix时间戳呢?当然也有对应的函数叫UNIX_TIMESTAMP

unix_timestamp()函数的作用是返回一个确切的时间点的UNIX时间戳,这个Unix时间戳是一个无符号整数。unix_timestamp()函数有两种重载形式,一是不带任何参数,另外一个是带有一个Date或DateTime或TimeStamp类型的参数。
unix_timestamp(),返回自1970-1-1 8:00:00开始到当前系统时间为止的秒数。
unix_timestamp(date),返回1970-1-1 8:00:00开始到date所代表的时间为止的秒数,对于早于1970-1-1 8:00:00的时间,总是返回 0 。

2014-03-14 13:01:34 wangjianno2 阅读数 1573

1.unix时间戳       

      UNIX时间,或称POSIX时间UNIX类UNIX系统使用的时间表示方式:从1970年1月1日0时0分0秒起至现在的总秒数,不考虑闰秒。例如


     值得注意的是,如果是1403704784800这样的话,那后3位表示的毫秒了。


2.Year 2038 problem

          在大部份的32位操作系统上,此“time_t”数据模式使用一个有正负号的32位元整数(signedint32)存储计算的秒数。依照此“time_t”标准,在此格式能被表示的最后时间是2038年1月19日03:14:07,星期二(UTC)。超过此一瞬间,时间将会被掩盖(wrap around)且在内部被表示为一个负数,并造成程序无法工作,因为它们无法将此时间识别为2038年,而可能会依个别实作而跳回1970年或1901年。错误的计算及动作可能因此产生。


2017-08-27 15:10:57 sinat_37079311 阅读数 7041
JavaScript 获取当前时间戳:

第一种方法:

var timestamp = Date.parse(new Date());

第二种方法:
var timestamp=new Date().getTime();


第三种方法:

var timestamp = (new Date()).valueOf();


第一种:获取的时间戳是把毫秒改成000显示,

第二种和第三种是获取了当前毫秒的时间戳






关于unix时间戳

阅读数 631

Unix时间戳

阅读数 900

没有更多推荐了,返回首页