python 如何将字符串转化为datetime.date
python 如何将字符串转化为datetime.date需要分”字符串与time类型的转换“和”time类型与datetime类型的转换“两种情况。
为了从字符串中提取时间,并进行比较,因此有了这个问题,如何将字符串转换成datetime类型
1.字符串与time类型的转换
>>> import time>>> timestr = "time2009-12-14">>> t = time.strptime(timestr, "time%Y-%m-%d")>>> print t(2009, 12, 14, 0, 0, 0, 0, 348, -1)
>>> type(t)>>>
如代码所示使用strptime进行转换,第一个参数是要转换的字符串,第二个参数是字符串中时间的格式与之对应的有函数strftime,是将time类型转换相应的字符串
下面是格式化符号汇总
%a 星期几的简写 Weekday name, abbr.%A 星期几的全称 Weekday name, full%b 月分的简写 Month name, abbr.%B 月份的全称 Month name, full%c 标准的日期的时间串 Complete date and time representation%d 十进制表示的每月的第几天 Day of the month%H 24小时制的小时 Hour (24-hour clock)%I 12小时制的小时 Hour (12-hour clock)%j 十进制表示的每年的第几天 Day of the year%m 十进制表示的月份 Month number%M 十时制表示的分钟数 Minute number%S 十进制的秒数 Second number%U 第年的第几周,把星期日做为第一天(值从0到53)Week number (Sunday first weekday)%w 十进制表示的星期几(值从0到6,星期天为0)weekday number%W 每年的第几周,把星期一做为第一天(值从0到53) Week number (Monday first weekday)%x 标准的日期串 Complete date representation (e.g. 13/01/08)%X 标准的时间串 Complete time representation (e.g. 17:02:10)%y 不带世纪的十进制年份(值从0到99)Year number within century%Y 带世纪部分的十制年份 Year number%z,%Z 时区名称,如果不能得到时区名称则返回空字符。Name of time zone%% 百分号
2.time类型与datetime类型的转换
这一步比较简单,使用datetime函数,代码如下
>>> import datetime>>> d = datetime.datetime(* t[:6])>>> print d2009-12-14 00:00:00
>>> type(d)>>>
备忘:*表示将列表中的数据作为函数的参数,**表示将字典的数据作为函数的参数传入
参考资料
python 字符串和datetime转换.CSDN博客[引用时间2017-12-28]
用Python实现字符串和日期相互转换的方法,具体如下:
这里用的分别是time和datetime函数来处理
import time,datetime//日期转化为字符串# date to str//输出时间print time.strftime("%Y-%m-%d %X", time.localtime())#str to date//字符串转化为日期t = time.strptime("2016 - 12 - 05", "%Y - %m - %d")y,m,d = t[0:3]//输出时间print datetime.datetime(y,m,d)
比较省事的办法是用time模块的strptime方法来解析日期字符串成为时间对象,然后再把年月日部分提取出来,最后生成datetime.date对象。
# 方法1, 用time模块的strptime方法来解析日期字符串成为时间对象
import time, datetime
date_str = '2017-10-19'
fmt = '%Y-%m-%d'
time_tuple = time.strptime(date_str, fmt)
year, month, day = time_tuple[:3]
a_date = datetime.date(year, month, day)
print(a_date, type(a_date))
# 方法2, 直接把日期字符串拆分转换成 年/月/日 对应的整数
import datetime
date_str = '2017-10-19'
print(datetime.date(*map(int, date_str.split('-'))))
python 如何将字符串转化为datetime.date需要分”字符串与time类型的转换“和”time类型与datetime类型的转换“两种情况。
你的应用程序接受字符串格式的输入,但是你想将它们转换为 datetime 对象以便在上面执行非字符串操作。
解决方案
使用Python的标准模块 datetime 可以很容易的解决这个问题。比如:
>>> from datetime import datetime
>>> text = '2012-09-20'
>>> y = datetime.strptime(text, '%Y-%m-%d')
>>> z = datetime.now()
>>> diff = z - y
>>> diff
datetime.timedelta(3, 77824, 177393)
>>>
讨论
datetime.strptime() 方法支持很多的格式化代码, 比如 %Y 代表4位数年份, %m 代表两位数月份。 还有一点值得注意的是这些格式化占位符也可以反过来使用,将日期输出为指定的格式字符串形式。
比如,假设你的代码中生成了一个 datetime 对象, 你想将它格式化为漂亮易读形式后放在自动生成的信件或者报告的顶部:
>>> z
datetime.datetime(2012, 9, 23, 21, 37, 4, 177393)
>>> nice_z = datetime.strftime(z, '%A %B %d, %Y')
>>> nice_z
'Sunday September 23, 2012'
>>>
还有一点需要注意的是, strptime() 的性能要比你想象中的差很多, 因为它是使用纯Python实现,并且必须处理所有的系统本地设置。 如果你要在代码中需要解析大量的日期并且已经知道了日期字符串的确切格式,可以自己实现一套解析方案来获取更好的性能。 比如,如果你已经知道所以日期格式是 YYYY-MM-DD ,你可以像下面这样实现一个解析函数:
from datetime import datetime
def parse_ymd(s):
year_s, mon_s, day_s = s.split('-')
return datetime(int(year_s), int(mon_s), int(day_s))
实际测试中,这个函数比 datetime.strptime() 快7倍多。 如果你要处理大量的涉及到日期的数据的话,那么最好考虑下这个方案!
以上就是Python如何将字符串转换为日期的详细内容,
$ python
Python 2.7.3 (default, Jan 2 2013, 16:53:07)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> dtstr = '2014-02-14 21:32:12'
>>> datetime.datetime.strptime(dtstr, "%Y-%m-%d %H:%M:%S").date()
datetime.date(2014, 2, 14)
>>>
这是很多初学者都关注的问题,但又是一个很难回答的问题,问题的核心是采取什么标准来衡量一个人是否已经入门。
以知识量的多少来衡量是不是可行呢?有些人走马观花一般学了很多python基础,概念上都有所了解,可一旦让他动手写代码,他却错误连篇,所谓的概念上有所了解,其实都是一知半解,不求甚解。
以实际动手能力来衡量,是不是可行呢?应该说比以知识量多少来衡量要务实很多,毕竟学习python就是为了写代码去做一些事情,如果代码写不出来,还算什么入门呢,这样的入门还有什么意义呢?
实际动手能力,听起来合情合理,但不免过于笼统,啥叫实际动手能力呢?我认为可以将动手能力划分为以下几部分
理解问题的能力
组织代码的能力
理解代码的能力
2. 入门检测
下面,通过一个题目,来检测一下你的入门程度
题目要求如下:
请写程序接收用户的标准输入,用户会输入两个int类型数据,中间用空格分开,程序需计算这两个数相加的和,并在屏幕上以指定格式输出结果:x + y = z,x, y 就是用户的输入,z是程序算出来的和。
完成这个题目,既需要你具备足够的知识量,也需要你具备组织代码和理解代码的能力。
首先,你得知道接收用户的输入需要使用input函数,该函数返回的数据是字符串类型,这个字符串里包含了用户输入的两个int类型数据,中间用逗号分隔因此你需要对数据进行解析。最合理的方法是使用字符串的split方法将字符串分隔,分隔后得到一个列表,列表里有两个数据,仍然是字符串类型。
接下来需要使用int函数将列表里的数据转成int类型并实现求和操作。
最后,你需要按照要求输出结果,你要用到字符串格式化。
示例代码如下
value = input("请输入两个整数,中间用逗号分隔:")
arrs = value.split()
num_sum = int(arrs[0]) + int(arrs[1])
print("{x} + {y}= {z}".format(x=arrs[0], y=arrs[1], z=num_sum))
我前面之所以强调入门的能力中包括理解代码的能力,因为你只是刚刚入门,还需要更多的学习和实践,那么阅读他人的代码就是你学习提升的必经之路,理解代码要达到以下几个标准
清楚的知道每一个变量,每一个数据的数据类型
清楚的知道每一个函数,方法的作用
清楚的知道每一行代码的意图
如果你做不到以上3点中的任意一点,我不能说你还不入门,只是你后续的学习障碍会很多,提升会很慢。
3、熟练是最好的理解
任何技能,都无法只通过听,看就能掌握,更多的是需要反复的实践,最终达到熟练,没有比熟练更好的理解,所以我建议你选择入门教程时,选择练习题比较多的那种,只有多练习才能熟练,在熟练的过程中做到理解,记忆,转化为自己的知识。
如果你所学的教程没有那么多练习题,或者是觉得练习题不够用,怎么办呢?福利来了,我自己搜集编写了一套130道python练习题,难度适中,覆盖面广,每道题目都有细致的讲解和答案,很适合新手练习提升。
邴味舒汀: 可以使用 python-dateutil 模块:from dateutil.parser import parse s = '2016-08-07 13:00:20' d = parse(s) print(d)
宿迁市15775444076: python 怎么将字符串转换为byte - ?
邴味舒汀: python 怎么将字符串转换为byte<br>1、command元素——貌似没什么效果.是不是支持有问题 <br>表示命令按钮,比如单选按钮、复选框或按钮.<br>只有当 command 元素位于 menu 元素内时,该元素才是可见的.否则不会显示这个元素,...
宿迁市15775444076: python怎么把字符串转换成数字 - ?
邴味舒汀: 整数字符串转换为对应的整数 int('12') 小数字符串转换为对应小数 float('12.34') 数字转换为字符串 str(123.45) ASCII码转换为相应字符 chr(97) 字符转换为响应ASCII码 ord('a')
宿迁市15775444076: python 怎么将字符转成dict - ?
邴味舒汀: str_ = '''{'a':1,'b':2}''' print type(str_) str_to_dict = eval(str_)#使用eval 函数 直接转成dict ,同样适用于数组 元组.print type(str_to_dict)
宿迁市15775444076: python 怎么把字符串类型转换为数字 - ?
邴味舒汀: #coding:utf-8 def translate(st="你要转换的字符串"):try:num=int(st)return numexcept:#print "\"%s\" is not an integer."%stpasstry:num=float(st)return numexcept:#print "\"%s\" is not a float."%stpasstry:num=complex(st)...
宿迁市15775444076: 关于python的字符串格式化?
邴味舒汀: 在python中也有类似于c中的printf()的格式输出标记.在python中格式化输出字符串使用的是%运算符,通用的形式为 格式标记字符串 % 要输出的值组 其中,左边部分的”格式标记字符串“可以完全和c中的一致.右边的'值组'如果有两个及以...
宿迁市15775444076: python 怎么将abc装换成bcd - ?
邴味舒汀: #======先给你代码===== a='abc' b='' for i in a: b=b+chr(ord(i)+1) print (b)#===================== 这样输出的b的值就是'bcd'远离就是逐个取原字符串a的每一位,然后将对应的ascii值加1,重新形成一个新字符串b.ord()是将字符转换为对应的ASCII码,chr()是将ASCII码转换为对应的字符.希望对你有所帮助!
宿迁市15775444076: python字符串转换成变量的几种方法 - ?
邴味舒汀: 直接使用float(对应的变量进行转化) 具体举例如下是: a='2.30' b=float(a) print b b转为float类型的2.30,可以通过tpye来进行测试
宿迁市15775444076: python怎么实现字符串和数字的转换 - ?
邴味舒汀: #py3 from functools import reduce DIGITS={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9} def char2num(s): #单个字符转数字return DIGITS[s] def str2int(s):#整数字串转化整数,不支持浮点数.浮点数得另写一个if s[0]=='-': #要判断一下该数...
宿迁市15775444076: 请问python中这字符串转bytes怎么做算的? - ?
邴味舒汀: 字符串类(str)有一个方法encode可以将字符串转换为bytes对象.调用encode方法是,可选择以字符串方式传递一个编码,默认的编码是UTF-8.下图是按默认编码将字符串'你好'转换成bytes并输出.代码 输出