Python之日期函数处理

本篇主要介绍Python的日期的timestamp(毫秒数),日期对象(DateTimeTime)以及日期的字符串表示之间的相互转化,以及日期的增减操作。

主要使用了python原生模块datime中的datetime, timedelta,以及time模块。

1.timestamp转datetime

timestamp(毫秒数)转datetime:

1
2
3
4
5
6
7
def date_from_timestamp_mills(timestamp):
timestamp_mills = ( timestamp % 1000 ) * 1000
timestamp_seconds = timestamp / 1000

date = datetime.fromtimestamp(timestamp_seconds)

return datetime(date.year, date.month, date.day, date.hour, date.minute, date.second, timestamp_mills)

timestamp(秒数)转datetime:

1
2
def date_from_timestamp_seconds(timestamp):
return datetime.fromtimestamp(timestamp)

2.datetime转字符串表示

datetime转字符串主要是用了datetime的strftime函数。其中格式化的字符串主要有如下:

  • 2015-10-25对应format:%Y-%m-%s
  • 2015-10-25 20:05:00对应format:%Y-%m-%s %H:%M:%S
1
2
def format_date(date, format_pattern):
return date.strftime(format_pattern)

其他的格式字符串可以参见python官方文档:https://docs.python.org/2/library/datetime.html

3.字符串转datetime

1
2
def parse_date(date_str, format_pattern):
return datetime.strptime(date_str, format_pattern)

4.datetime转timestamp

dateime转timestamp(毫秒数):

1
2
3
4
# 获取日期中的毫秒数
def timestamp_mills_from_date(date):
mills = date.microsecond / 1000
return long(time.mktime(date.timetuple()) * 1000) + mills

datetime转timestamp(秒数):

1
2
def timestamp_secs_from_date(date):
return long(time.mktime(date.timetuple()))

5.使用timedelta来进行日期的增减

主要使用模块datetime的timedelta模块进行日期的删减,timedelta只支持到最大范围为周的情况。

1
2
3
def date_add(date, weeks=0, days=0, hours=0, minutes=0, seconds=0):
add_delta = timedelta(days=days, seconds=seconds, minutes=minutes, hours=hours, weeks=weeks)
return date + add_delta

6.其他

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 获取当前日期
date = datetime.now()

# 获取日期对应的年份
date.year
# 获取日期对应的月份(1-12)
date.month
# 获取日期对应的日
date.day
# 获取日期对应的小时(0-23)
date.hour
# 获取日期对应的分钟(0-59)
date.minute
# 获取日期对应的秒数(0-59)
date.second
# 获取日期对应的微秒, 可以通过除以1000来获取毫秒
date.microsecond