Python-玩转数据-时间处理专题

1.当前时间

import datetime
#取当前时间
print(datetime.datetime.now())

结果格式:

2022, 3, 7, 19, 33, 49, 100000
import time
now = time.strftime('%Y-%m-%d %H:%M:%S')
print(now)

结果格式:

'2022-03-07 19:32:13'

2. 获取年、月、日

import datetime
#获取年份
print(datetime.datetime.now().year)
#取月
print(datetime.datetime.now().month)
#取日
print(datetime.datetime.now().day)

3. 获取时、分、秒

import datetime
#取时
print(datetime.datetime.now().hour)
#取分
print(datetime.datetime.now().minute)
#取秒
print(datetime.datetime.now().second)

4. 获取上个月最后一天的日期(本月的第一天减去1天)

last = datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1)
print (last)

结果

2022, 2, 28

5. 获取时间差(时间差单位为秒,常用于计算程序运行的时间)

import datetime
import time
starttime = datetime.datetime.now()
time.sleep(1)
endtime = datetime.datetime.now()
print ((endtime - starttime).seconds)

6. 计算当前时间向后10个小时的时间

d1 = datetime.datetime.now()
d3 = d1 + datetime.timedelta(hours=10)
d3.ctime()

其本上常用的类有:datetime和timedelta两个。它们之间可以相互加减。每个类都有一些方法和属性可以查看具体的值,如 datetime可以查看:天数(day),小时数(hour),星期几(weekday())等;timedelta可以查看:天数(days),秒数 (seconds)等。

7. 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 当前时区的名称
  • %% %号本身

附上示例代码:

  #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  import datetime, calendar

  def getYesterday():

  today=datetime.date.today()

  oneday=datetime.timedelta(days=1)

  yesterday=today-oneday

  return yesterday

  def getToday():

  return datetime.date.today()

  #获取给定参数的前几天的日期,返回一个list

  def getDaysByNum(num):

  today=datetime.date.today()

  oneday=datetime.timedelta(days=1)

  li=[]

  for i in range(0,num):

  #今天减一天,一天一天减

  today=today-oneday

  #把日期转换成字符串

  #result=datetostr(today)

  li.append(datetostr(today))

  return li

  #将字符串转换成datetime类型

  def strtodatetime(datestr,format):

  return datetime.datetime.strptime(datestr,format)

  #时间转换成字符串,格式为2008-08-02

  def datetostr(date):

  return str(date)[0:10]

  #两个日期相隔多少天,例:2008-10-03和2008-10-01是相隔两天

  def datediff(beginDate,endDate):

  format=%Y-%m-%d;

  bd=strtodatetime(beginDate,format)

  ed=strtodatetime(endDate,format)

  oneday=datetime.timedelta(days=1)

  count=0

  while bd!=ed:

  ed=ed-oneday

  count+=1

  return count

  #获取两个时间段的所有时间,返回list

  def getDays(beginDate,endDate):

  format=%Y-%m-%d;

  bd=strtodatetime(beginDate,format)

  ed=strtodatetime(endDate,format)

  oneday=datetime.timedelta(days=1)

  num=datediff(beginDate,endDate)+1

  li=[]

  for i in range(0,num):

  li.append(datetostr(ed))

  ed=ed-oneday

  return li

  #获取当前年份 是一个字符串

  def getYear():

  return str(datetime.date.today())[0:4]

  #获取当前月份 是一个字符串

  def getMonth():

  return str(datetime.date.today())[5:7]

  #获取当前天 是一个字符串

  def getDay():

  return str(datetime.date.today())[8:10]

  def getNow():

  return datetime.datetime.now()

  print getToday()

  print getYesterday()

  print getDaysByNum(3)

  print getDays('2008-10-01','2008-10-05')

  print '2008-10-04 00:00:00'[0:10]

  print str(getYear())+getMonth()+getDay()

  print getNow()

8. 从字符串中提取时间

from datetime import  datetime
import re
series = """
'01/18/2022 13:11:00',100,'1st';
'01/19/2022 13:12:00',100,'2nd';
'01/20/2022 14:11:00',100,'3rd';
"""
print(series)
dt=re.compile("'[0-9/:\s]+'")
result = dt.findall(series)
print(result)
pydt = datetime.strptime(result[0].replace("'",""),'%m/%d/%Y %H:%M:%S')
print(pydt)
pydt1=datetime.date(pydt)
print(pydt1.year)

打印结果:

'01/18/2022 13:11:00',100,'1st';
'01/19/2022 13:12:00',100,'2nd';
'01/20/2022 14:11:00',100,'3rd';

["'01/18/2022 13:11:00'", "'01/19/2022 13:12:00'", "'01/20/2022 14:11:00'"]
2022-01-18 13:11:00
2022
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值