datetime matplotlib刻度间隔 - 如何在Python中以常规格式打印日期?





matplotlib设置坐标轴刻度大小 title位置 (16)


# convert date time to regular format.

d_date = datetime.datetime.now()
reg_format_date = d_date.strftime("%Y-%m-%d %I:%M:%S %p")
print(reg_format_date)

# some other date formats.
reg_format_date = d_date.strftime("%d %B %Y %I:%M:%S %p")
print(reg_format_date)
reg_format_date = d_date.strftime("%Y-%m-%d %H:%M:%S")
print(reg_format_date)

OUTPUT

2016-10-06 01:21:34 PM
06 October 2016 01:21:34 PM
2016-10-06 13:21:34

这是我的代码:

import datetime
today = datetime.date.today()
print today

这打印出来:2008-11-22这正是我想要的,但是....我有一个列表,我将它附加到然后突然一切都会变得“不可靠”。 代码如下:

import datetime
mylist = []
today = datetime.date.today()
mylist.append(today)
print mylist

这将打印以下内容:

[datetime.date(2008, 11, 22)]

我怎样才能得到像“2008-11-22”这样简单的日期?




import datetime
import time

months = ["Unknown","January","Febuary","Marchh","April","May","June","July","August","September","October","November","December"]
datetimeWrite = (time.strftime("%d-%m-%Y "))
date = time.strftime("%d")
month= time.strftime("%m")
choices = {'01': 'Jan', '02':'Feb','03':'Mar','04':'Apr','05':'May','06': 'Jun','07':'Jul','08':'Aug','09':'Sep','10':'Oct','11':'Nov','12':'Dec'}
result = choices.get(month, 'default')
year = time.strftime("%Y")
Date = date+"-"+result+"-"+year
print Date

通过这种方式,你可以像这个例子一样获得日期格式:2017年6月22日




你可能想把它作为一个字符串来附加?

import datetime 
mylist = [] 
today = str(datetime.date.today())
mylist.append(today) 
print mylist



使用格式化字符串文字 (自Python str.format()使用类型特定的datetime字符串格式(请参阅nk9的回答,使用str.format() 。):

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

日期/时间格式指令不作为格式字符串语法的一部分记录,而是记录在datedatetime timetimestrftime()文档中。 这些标准基于1989 C标准,但自Python 3.6以来包含一些ISO 8601指令。




你可以使用easy_dateeasy_date它:

import date_converter
my_date = date_converter.date_to_string(today, '%Y-%m-%d')



你可以做:

mylist.append(str(today))



这个更短:

>>> import time
>>> time.strftime("%Y-%m-%d %H:%M")
'2013-11-19 09:38'



以下是如何将日期显示为(年/月/日):

from datetime import datetime
now = datetime.now()

print '%s/%s/%s' % (now.year, now.month, now.day)



我讨厌为了方便导入太多模块的想法。 我宁愿使用可用的模块,在这种情况下是datetime而不是调用新的模块time

>>> a = datetime.datetime(2015, 04, 01, 11, 23, 22)
>>> a.strftime('%Y-%m-%d %H:%M')
'2015-04-01 11:23'



使用date.strftime。 文档描述了格式参数。

这一个是你想要的:

some_date.strftime('%Y-%m-%d')

这一个考虑到了区域设置。 (做这个)

some_date.strftime('%c')



WHY:日期是对象

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

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

  • 可以使用str()函数获得“print”使用的正则表达式。 这是大多数时间最常用的人类可读格式,并且用于简化显示。 所以str(datetime.datetime(2008, 11, 22, 19, 53, 42)) '2008-11-22 19:53:42' 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)'

发生的是,当你使用“print”打印日期时,它使用了str()这样你就可以看到一个不错的日期字符串。 但是当你打印mylist ,你已经打印了一个对象列表,并且Python试图用repr()来表示这组数据。

如何:你想怎么做?

那么,当你操纵日期时,一直使用日期对象。 他们有上千种有用的方法,大多数Python API期望日期是对象。

当你想显示它们时,只需使用str() 。 在Python中,最好的做法是明确地施放一切。 所以就在打印时,使用str(date)获取日期的字符串表示。

最后一件事。 当您尝试打印日期时,您打印了mylist 。 如果要打印日期,则必须打印日期对象,而不是其容器(列表)。

EG,您想要在列表中打印所有日期:

for date in mylist :
    print str(date)

请注意, 在这种情况下 ,你甚至可以省略str()因为print会为你使用它。 但它不应该成为一种习惯:-)

实际案例,使用你的代码

import datetime
mylist = []
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-22

print "This is a new day : " + mylist[0] # will crash
cannot concatenate 'str' and 'datetime.date' objects

print "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'

"%"后面的所有字母代表某种格式:

  • %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 datetime
f"{datetime.datetime.now():%Y-%m-%d}"
'2017-06-15'

本土化

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




import datetime
print datetime.datetime.now().strftime("%Y-%m-%d %H:%M")

编辑:

Cees建议后,我开始使用时间:

import time
print time.strftime("%Y-%m-%d %H:%M")



我的答案是一个快速免责声明 - 我只学了大约2周的Python,所以我绝不是专家; 因此,我的解释可能不是最好的,我可能会使用错误的术语。 无论如何,在这里。

我注意到在你的代码中,当你today = datetime.date.today()声明你的变量today = datetime.date.today()你选择用内置函数的名称命名变量。

当你的下一行代码mylist.append(today)附加了你的列表时,它附加了你之前设置为today变量值的整个字符串datetime.date.today() ,而不是仅仅追加today()

一个简单的解决方案,尽管可能不是大多数编码人员在使用日期时间模块时会使用的方法,但是要更改变量的名称。

这是我尝试过的:

import datetime
mylist = []
present = datetime.date.today()
mylist.append(present)
print present

并打印yyyy-mm-dd




简单的答案 -

datetime.date.today().isoformat()



甚至

from datetime import datetime, date

"{:%d.%m.%Y}".format(datetime.now())

Out:'25 .12.2013

要么

"{} - {:%d.%m.%Y}".format("Today", datetime.now())

Out:'Today - 25.12.2013'

"{:%A}".format(date.today())

Out:'星期三'

'{}__{:%Y.%m.%d__%H-%M}.log'.format(__name__, datetime.now())

出:'__main ____ 2014.06.09__16-56.log'




这是Linux命令行环境的1行Python命令。我发现这非常好,因为我不是那么热的Bash家伙。

python -c "import os.path; print os.path.isfile('/path_to/file.xxx')"

我希望这是有帮助的。





python datetime date