🌱日期
Python 中的日期不是其自身的数据类型,但是我们可以导入名为 datetime 的模块,把日期视作日期对象进行处理。
import datetime
x = datetime.datetime.now()
print(x)
创建日期对象
如需创建日期,我们可以使用 datetime 模块的 datetime() 类(构造函数)。
datetime() 类需要三个参数来创建日期:年、月、日。
import datetime
x = datetime.datetime(2020, 5, 17)
print(x)
# datetime() 类还接受时间和时区(小时、分钟、秒、微秒、tzone)的参数,
# 不过它们是可选的,默认值为 0,(时区默认为 None)。
strftime() 方法:格式化日期
strftime() 方法可以将日期对象格式化为可读的字符串,并使用format参数来指定返回字符串的格式。
import datetime
x = datetime.datetime.now()
print(x.year)
print(x.strftime("%a"))
所有合法格式代码参考
指令 | 描述 | 实例 |
%a | weekday,短版本 | Thu |
%A | weekday,完整版本 | Thursday |
%w | weekday,数字0-6,0为周日 | 4 |
%d | 日,数字01-31 | 20 |
%b | 月,短版本 | Oct |
%B | 月,完整版本 | October |
%m | 月,数字01-12 | 10 |
%y | 年,短版本,无世纪 | 22 |
%Y | 年完整版本 | 2022 |
%H | 小时,00-23 | 15 |
%I | 小时,00-12 | 11 |
%p | AM/PM | AM |
%M | 分,00-59 | 20 |
%S | 秒,00-59 | 21 |
%f | 微秒,000000-999999 | 666666 |
%z | UTC,偏移 | +0100 |
%Z | 时区 | CST |
%j | 天数,001-366 | 293 |
%U | 周数,每周的第一天是周日,00-53 | 42 |
%W | 周数,每周的第一天是周一,00-53 | 42 |
%c | 日期和时间的本地版本 | Thu Oct 20 11:28:09 2022 |
%x | 日期的本地版本 | 10/20/22 |
%X | 时间的本地版本 | 11:28:43 |
%% | 输出就是一个% | % |
🌱字符串
为确保字符串按预期显示,我们可以使用 format() 方法对结果进行格式化。
字符串 format()
format() 方法允许你格式化字符串的选定部分。
有时文本的一部分是你无法控制的,也许它们来自数据库或用户输入?
要控制此类值,请在文本中添加占位符(花括号 {}),然后通过 format() 方法运行值。
price = 52
txt = "The price is {} dollars"
print(txt.format(price))
可以在花括号 {} 内添加参数以指定如何转换值。
多个值
如果需要使用更多值,只需向format() 方法添加更多值,并添加更多的占位符(花括号 {})。
quantity = 3
itemno = 567
price = 52
myorder = "I want {} pieces of item number {} for {:.2f} dollars."
print(myorder.format(quantity, itemno, price))
# 第三个占位符表示,将格式化为带有两个小数的数字
索引号
可以使用索引号(花括号 {0} 内的数字)来确保将值放在正确的占位符中。
quantity = 3
itemno = 567
price = 52
myorder = "I want {0} pieces of item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))
# 多次引用相同的值,请使用索引号
age = 63
name = "Bill"
txt = "His name is {1}. {1} is {0} years old."
print(txt.format(age, name))
命名索引
还可以通过在花括号 {carname} 中输入名称来使用命名索引,但是在传递参数值 txt.format(carname = "Ford") 时,必须使用名称。
myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname = "Porsche", model = "911"))
🌱字符串 format() 参考手册
"I want {0} pieces of item number {1} for {2:.2f} dollars."
# 格式化指令需写入占位符{}中
指令 | 描述 |
:< | 左对齐结果(在可用空间内) |
:> | 右对齐结果(在可用空间内) |
:^ | 居中对齐结果(在可用空间内) |
:= | 将标志放置在最左侧 |
:+ | 使用加号知识结果是正数还是负数 |
:- | 负号仅用于负值 |
: | 使用空格在正数之前插入一个多余的空格(在负数之前使用减号) |
:, | 使用逗号作为千位分隔符 |
:_ | 使用下划线作为千位分隔符 |
:b | 二进制格式化 |
:c | 将值转为相应的unicode字符 |
:d | 十进制格式 |
:e | 科学格式,带有小写字母e |
:E | 科学格式,带有大写字母E |
:f | 定点数字格式 |
:F | 定点数字格式,以大写形式显示(将 inf 和 nan 显示为 INF 和 NAN) |
:g | 通用格式 |
:G | 通用格式(将大写 E 用作科学计数法) |
:o | 八进制格式 |
:x | 十六进制格式,小写 |
:X | 十六进制格式,大写 |
:n | 数字格式 |
:% | 百分比格式 |