栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python

为什么:日期是对象

在Python中,日期是对象。因此,当你操作它们时,你将操作对象,而不是字符串,时间戳或其他任何对象。

Python中的任何对象都有两个字符串表示形式:

可以使用

str()
函数获取“打印”所使用的常规表示形式。在大多数情况下,它是最常见的人类可读格式,用于简化显示。所以
str(datetime.datetime(2008, 11, 22, 19, 53, 42))
给你
'2008-11-22 19:53:42'

用于表示对象性质(作为数据)的替代表示。它可以使用该repr()函数获得,并且很容易知道在开发或调试时要处理的数据类型。

repr(datetime.datetime(2008, 11, 22, 19, 53, 42))
给你
'datetime.datetime(2008, 11, 22, 19, 53, 42)
‘。

发生的事情是,当你使用“打印”打印日期时,会使用它,str()以便可以看到一个不错的日期字符串。但是,在打印后mylist,你已经打印了对象列表,Python尝试使用来表示数据集repr()。

方法:你想怎么做?

好吧,当你操作日期时,请一直使用日期对象。他们获得了数千种有用的方法,并且大多数Python API都希望日期成为对象。

要显示它们时,只需使用

str()
。在
Python
中,良好的做法是显式转换所有内容。因此,仅在打印时,使用即可获取日期的字符串表示形式
str(date)

最后一件事。当你尝试打印日期时,你打印了

mylist
。如果要打印日期,则必须打印日期对象,而不是其容器(列表)。

EG,你想将所有日期打印在列表中:

for date in mylist :    print str(date)

请注意,在这种特定情况下,你甚至可以省略,str()因为打印将为你使用它。但这不应该成为一种习惯

实际案例,使用你的代码

import datetimemylist = []today = datetime.date.today()mylist.append(today)print mylist[0] # print the date object, not the container ;-)2008-11-22# It's better to always use str() because :print "This is a new day : ", mylist[0] # will work>>> This is a new day : 2008-11-22print "This is a new day : " + mylist[0] # will crash>>> cannot concatenate 'str' and 'datetime.date' objectsprint "This is a new day : " + str(mylist[0]) >>> This is a new day : 2008-11-22

高级日期格式

日期具有默认表示形式,但是你可能需要以特定格式打印日期。在这种情况下,你可以使用

strftime()
方法获得自定义的字符串表示形式。

strftime()
需要一个字符串模式来说明如何格式化日期。

EG:

print today.strftime('We are the %d, %b %Y')>>> 'We are the 22, Nov 2008'

a
之后的所有字母”%”代表某种格式:

  • %d 是天数
  • %m 是月份号
  • %b 是月份的缩写
  • %y 是年份的后两位数字
  • %Y 是整年

等等

看看官方文档或McCutchen的快速参考资料,你可能一无所知。

从PEP3101开始,每个对象都可以具有自己的格式,该格式可以由任何字符串的方法格式自动使用。对于日期时间,格式与strftime中使用的格式相同。因此,你可以像上面这样做:

print "We are the {:%d, %b %Y}".format(today)>>> 'We are the 22, Nov 2008'

这种形式的优点是你还可以同时转换其他对象。
随着格式字符串文字的引入(自Python 3.6,2016-12-23起),可以这样写:

import datetimef"{datetime.datetime.now():%Y-%m-%d}">>> '2017-06-15'

本土化
如果正确使用日期,日期可以自动适应当地的语言和文化,但这有点复杂。也许是关于SO(堆栈溢出)的另一个问题;-)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383123.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号