python 日期和时间、且与 PHP 对比

阅读数: 927 2018年10月08日

1、python 使用时间模块必须导入 import time;

php 无需导入


2、获得时间戳

python time.time(),获得时间戳且带小数点。

php time() 获得是整数形式的时间戳,不带小数点;如果需要获得小数点的时间戳,使用 microtime(true)。


3、获取本地时间

python 使用 python time.localtime(),得到“时间元组”:

time.struct_time(tm_year=2018, tm_mon=10, tm_mday=8, tm_hour=14, tm_min=6, tm_sec=11, tm_wday=0, tm_yday=281, tm_isdst=0)

这个还能被 time.asctime() 处理,time.asctime( time.localtime() )

php 直接使用 time() 即可获得当前时间戳,且是一个数字。或者使用 strtotime('today'),获得时间戳。


4、格式化时间戳成日期

python 使用 time.strftime(format[, t]) 例如:

time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 输出 2018-10-08 14:12:28

python中时间日期格式化符号:

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身


php 使用 date('Y-m-d H:i:s', time()) 输出 2018-10-08 14:12:30 

日 --- --- 

d 月份中的第几天,有前导零的 2 位数字 01 到 31 

D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun 

j 月份中的第几天,没有前导零 1 到 31 

l("L"的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday 

N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天) 

S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用 

w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六) 

z 年份中的第几天 0 到 365 

星期 --- --- 

W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周) 

月 --- --- 

F 月份,完整的文本格式,例如 January 或者 March January 到 December 

m 数字表示的月份,有前导零 01 到 12 

M 三个字母缩写表示的月份 Jan 到 Dec 

n 数字表示的月份,没有前导零 1 到 12 

t 指定的月份有几天 28 到 31 

年 --- --- 

L 是否为闰年 如果是闰年为 1,否则为 0 

o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003 

Y 4 位数字完整表示的年份 例如:1999 或 2003 

y 2 位数字表示的年份 例如:99 或 03 

时间 --- --- 

a 小写的上午和下午值 am 或 pm 

A 大写的上午和下午值 AM 或 PM 

B Swatch Internet 标准时 000 到 999 

g 小时,12 小时格式,没有前导零 1 到 12 

G 小时,24 小时格式,没有前导零 0 到 23 

h 小时,12 小时格式,有前导零 01 到 12 

H 小时,24 小时格式,有前导零 00 到 23 

i 有前导零的分钟数 00 到 59> 

s 秒数,有前导零 00 到 59> 

u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。  示例: 654321 

时区 --- --- 

e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores 

I 是否为夏令时 如果是夏令时为 1,否则为 0 

O 与格林威治时间相差的小时数 例如:+0200 

P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00 

T 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间")。 

Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200 

完整的日期/时间 --- --- 

c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00 

r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200 

U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数



5、格式化日期成时间戳

python 使用 time.mktime(struct_time)

print(time.mktime(time.strptime('2018-10-08 10:12:32',"%Y-%m-%d %H:%M:%S"))) 得到 1538964752.0


php 使用 strtotime() 


6、获得某月的日历

python 使用 calendar.month(),例如:

import calendar
cal = calendar.month(2018,10)
print(cal)
输出:
    October 2018
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

php 无此操作


参考资料
http://www.runoob.com/python/python-date-time.html
phpriji.cn | 网站地图 | 沪ICP备17015433号-1