2014-09-12 15:57:29 bingqingsuimeng 阅读数 2213


UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出PHP日期转时间戳、MySQL日期转换函数互相转换的几种转换方式和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出互相转换的几种转换方式。 


一、在MySQL中完成 
   
这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。 
1. UNIX时间戳转换为日期用函数: FROM_UNIXTIME() 
一般形式:select FROM_UNIXTIME(1156219870); 
2. 日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() 
一般形式:Select UNIX_TIMESTAMP('2006-11-04 12:23:00′); 
举例:mysql查询当天的记录数: 
$sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d') order by id desc”; 
当然大家也可以选择在PHP中进行转换,下面说说在PHP中转换。 

二、在PHP中完成 
   
这种方式在PHP程序中完成转换,优点是无论是不是数据库中查询获得的数据都能转换,转换范围不受限制,缺点是占用PHP解析器的解析时间,速度相对慢。 
1. UNIX时间戳转换为日期用函数: date() 
一般形式:date('Y-m-d H:i:s', 1156219870); 
2. 日期转换为UNIX时间戳用函数:strtotime() 
一般形式:strtotime('2010-03-24 08:15:42'); 

php日期转时间戳,指定日期转换成时间戳 

php日期转时间戳、指定日期转换成时间戳,PHP定时任务。 
这两天要实现这样功能: 
当达到某一条件时,让服务器发短信给用户,数量为多条。 
基本思路:linux 定时扫描,若有满足条件的用户,则发送短信。 
但为了防止打扰到用户,要求只能在白天8:00-20:00发送短信,怎么样获得到每天的这段时间区间? 
如下代码: 

复制代码代码如下:

<? 
$y=date("Y",time()); 
$m=date("m",time()); 
$d=date("d",time()); 
$start_time = mktime(9, 0, 0, $m, $d ,$y); 
$end_time = mktime(19, 0, 0, $m, $d ,$y); 
$time = time(); 
if($time >= $start_time && $time <= $end_time) 

// do something.... 

?> 
2019-02-18 11:07:13 weixin_41237259 阅读数 628

因为项目中经常用到Unix时间戳的转化,今天就总结一下

PHP中
这种方式在PHP程序中完成转换,优点是无论是不是数据库中查询获得的数据都能转换,转换范围不受限制,缺点是占用PHP解析器的解析时间,速度相对慢。
用函数:
date() 一般形式:date(‘Y-m-d H:i:s’, unix时间)
PHP中将正常时间戳转化为Unix时间戳
用函数:echo strtotime(“now”), “\n”;
echo strtotime(“10 September 2000”), “\n”;
echo strtotime("+1 day"), “\n”;
echo strtotime("+1 week"), “\n”;
echo strtotime("+1 week 2 days 4 hours 2 seconds"), “\n”;
echo strtotime(“next Thursday”), “\n”;
echo strtotime(“last Monday”), “\n”;

MySQL中
这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。

  1. UNIX时间戳转换为日期用函数: FROM_UNIXTIME()
    一般形式:select FROM_UNIXTIME(1156219870);
  2. 日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP()
    一般形式:Select UNIX_TIMESTAMP(‘2006-11-04 12:23:00′);
    举例:mysql查询当天的记录数:
    $sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),’%Y-%m-%d’) = DATE_FORMAT(NOW(),’%Y-%m-%d’) order by id desc”;

JS中
UNIX时间戳转换为日期用函数
new Date(Unix时间戳*1000)
在这里插入图片描述
但是格式并不尽如人意,自定义format函数对其进行格式转化
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
Date.prototype.Format = function(fmt)
{ //author: meizz
var o = {
“M+” : this.getMonth()+1, //月份
“d+” : this.getDate(), //日
“h+” : this.getHours(), //小时
“m+” : this.getMinutes(), //分
“s+” : this.getSeconds(), //秒
“q+” : Math.floor((this.getMonth()+3)/3), //季度
“S” : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : ((“00”+ o[k]).substr((""+ o[k]).length)));
return fmt;
}

new Date(Unix时间戳*1000).Format(“yyyy-MM-dd hh:mm:ss”);
在这里插入图片描述

2017-07-17 17:21:58 u013091013 阅读数 273

1、MySQL中时间戳转字符串

如把'2017-07-17 11:07:16' 转成 '1500260836'

select unix_timestamp('2017-07-17 11:07:16');

2、mysql中时间字符串转时间戳

如把'1500260836' 转成 '2017-07-17 11:07:16'

select from_unixtime(1500260836);

2015-07-23 16:56:18 github_15549139 阅读数 625

Python 时间,日期,时间戳(一)

python time模块中的函数调用了运行平台中的C语言库,因此一些函数的语义和细节定义(例如epoch的起始以及支持的最大值等)是与平台相关的。

Python time模块

术语解释:

  • epoch:时间起始点。在Unix系统,epoch是1970的1月1日的零时。
  • time模块只能处理epoch以后的时间,同时对于未来的时间也有个限制点,该点是由所在平台的C语言库决定。在Unix系统中,是2038年。
  • 实时时间的精度可能会比输出值的单位大。例如,在大多数Unix系统上,时钟的精度是50Hz-100Hz。
  • UTC为世界标准时间
  • 时间戳就是从epoch时间起始点开始到当前经过的秒数

time模块中不同时间表达方式转换:

From To Use
timestamp struct_time in UTC gmtime()
timestamp struct_time in local time localtime()
struct_time in UTC timestamp calendar.timegm()
struct_time in local time timestamp mktime()
struct_time str strftime()
str struct_time strptime()

time模块中的struct_time类型:

该类型是gmtime(),localtime()strptime()的返回类型。该类型是包含了九个元素的元组。九个元素分别为:tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst。

time模块中的函数:

time()

返回当前时间的时间戳,即从epoch到现在的秒数。虽然返回的值是float类型,但很多系统的时间精度达不到这个程度。

>>> import time
>>> time.time()
1437638809.995983

ctime([secs])

将时间戳转化为当地时间的字符类型,如果不提供输入,则自动调用time()函数。

>>> import time
>>> t = time.time()
>>> time.ctime(t)
'Thu Jul 23 16:20:05 2015'

gmtime([secs])

将时间戳转换为struct_time in UTC,如果不提供输入,则自动调用time()函数。

>>> import time
>>> time.gmtime()
time.struct_time(tm_year=2015, tm_mon=7, tm_mday=23, tm_hour=8, tm_min=31, tm_sec=26, tm_wday=3, tm_yday=204, tm_isdst=0)

localtime([secs])

将时间戳转换为struct_time in local,如果不提供输入,则自动调用time()函数。mktime()是其逆运算。

>>> import time
>>> t = time.localtime()
>>> t
time.struct_time(tm_year=2015, tm_mon=7, tm_mday=23, tm_hour=16, tm_min=35, tm_sec=25, tm_wday=3, tm_yday=204, tm_isdst=0)
>>> time.mktime(t)
1437640525.0

strftime(format[, t])

将struct_time类型数据转换为特定的字符类型。如果不提供输入,则自动调用localtime()函数。具体字符缩写代表的意义可参考文献1。

>>> import time
>>> time.strftime("%Y-%m-%d %H-%M-%S",time.localtime())
'2015-07-23 16-45-32'

strptime(string[, format])

将字符类型的时间表达以一种特定的格式解析为struct_time类型。

>>> import time
>>> time.strptime("30 Nov 2015", "%d %b %Y")
time.struct_time(tm_year=2015, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=334, tm_isdst=-1)

参考文献:

2015-01-06 11:42:20 eclothy 阅读数 4974

mysql中存储的时间,主要分为datetime类型和int类型。一般来说规范的存法是存int型,特别是像过期时间、最近更新等需要排序、比较大小的时间,更应该存为int型。但最近的项目数据库通信涉及到java、php、c#三种语言,php中的时间int型为10位整数,java中的时间long型为13位整数,c#中不支持unix时间戳。这样往数据库存10位int型就很不方便,于是所有时间都存的datetime类型,取数据时再自行处理成需要的格式(当然跨时区是硬伤)。

mysql中常用的几种时间格式转换函数整理如下:

1,from_unixtime(timestamp, format):timestamp为int型时间,如14290450779;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), 这里星期一是星期的第一

2,unix_timestamp(date):作用与from_unixtime()刚好相反,前者是把unix时间戳转换为可读的时间,而unix_timestamp()是把可读的时间转换为unix时间戳,这在对datetime存储的时间进行排序时会用到。如unix_timestamp('2009-08-06 10:10:40'),得到1249524739。如果unix_timestamp()不传参数,则调用now()函数自动取当前时间。

3,date_format(date, format):date_format()是将date或datetime类型值转换为任意的时间格式。比如常见的应用场景,某表有一个字段是更新时间,存储的是datetime类型,但前台展示时只需要显示年月日(xxxx-xx-xx),这个时候就可以用date_format(date,'%Y-%m-%d ')处理,而不需要在结果集中用程序循环处理。

thinkPHP中时间转换

阅读数 412

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