Tôi đang sử dụng:
str(datetime.datetime.today()).split()[0]
để trả lại ngày hôm nay trong YYYY-MM-DD
định dạng.
Có một cách ít thô thiển hơn để đạt được điều này?
Tôi đang sử dụng:
str(datetime.datetime.today()).split()[0]
để trả lại ngày hôm nay trong YYYY-MM-DD
định dạng.
Có một cách ít thô thiển hơn để đạt được điều này?
Câu trả lời:
Bạn có thể sử dụng strftime :
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
Ngoài ra, đối với bất kỳ ai cũng đang tìm kiếm Giờ, phút và giây không có đệm ở cuối: (Nhận xét của Gabriel Staples )
datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
datetime.datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
time.strftime("%Y-%m-%d")
?
datetime.utcnow().strftime('%Y-%m-%d')
date
có sẵn điều này cũng nhưdatetime
Bạn có thể sử dụng datetime.date.today()
và chuyển đổi datetime.date
đối tượng kết quả thành một chuỗi:
from datetime import date
today = str(date.today())
print(today) # '2017-12-26'
/
?
date.today().strftime('%Y/%m/%d')
.
để 'DMY', tách /
để M/D/Y
và tách -
để Y-M-D
. Mặc dù không phải ai cũng tuân theo những nguyên tắc này, nhưng nó sẽ giúp đọc ngày quốc tế miễn là không phải ai cũng chuyển sang Y-M-D
.
Datetime chỉ đáng yêu nếu bạn thích nhớ các mã vui nhộn. Bạn có thích sự đơn giản không?
>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'
Module này là đủ thông minh để hiểu những gì bạn có nghĩa .
Cứ làm đi pip install arrow
.
Phụ lục: Để trả lời cho những người thực hiện câu trả lời này, tôi chỉ nói rằng mũi tên đại diện cho một trong những cách tiếp cận khác để xử lý ngày trong Python. Đó chủ yếu là những gì tôi muốn đề xuất.
print(date.today())
>> "2018-12-16" ?? lol và dễ dàng nhận được các giá trị int t.year,t.month,t.day+1
>> (2018, 12, 17) ở đâu t = date.today()
và thực tế mọi người không phải gọi mũi tên màu xanh lá cây để cho họ biết thời gian. trời ơi, đây là quá nhiều mã để nhớ ...
import datetime
khác nhau hơn import arrow
? Chắc chắn một cái được tích hợp sẵn, nhưng nếu arrow
cung cấp một định dạng thuận tiện hơn, thì tại sao không sử dụng nó?
arrow
? Nhưng, đối với nhiều dự án đơn giản, nó không cần thiết. Ngoài ra, trong nhiều dự án nội bộ công ty, ppl cần phải được chấp thuận để bao gồm các thư viện mới.
Tôi luôn luôn sử dụng isoformat()
chức năng cho việc này.
from datetime import date
today = date.today().isoformat()
print(today) # '2018-12-05'
Lưu ý rằng điều này cũng hoạt động trên các đối tượng datetime nếu bạn cũng cần thời gian ở định dạng tiêu chuẩn.
from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'
Các câu trả lời khác đề nghị sử dụng python datetime.datetime
, nhưng như @Bill Bell nói, có những thư viện khác cung cấp datetime
giao diện đơn giản hơn như một dịch vụ hoặc là một phần của hệ sinh thái API lớn hơn. Đây là hai thư viện như vậy làm cho datetimes
rất đơn giản.
Bạn có thể sử dụng pd.to_datetime
từ thư viện gấu trúc . Dưới đây là các tùy chọn khác nhau, tùy thuộc vào những gì bạn muốn trả lại.
import pandas as pd
pd.to_datetime('today') # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')
Là một đối tượng datetime python ,
pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)
Là một chuỗi ngày được định dạng,
pd.to_datetime('today').isoformat()
# '2019-04-18T04:03:32.493337'
# Or, `strftime` for custom formats.
pd.to_datetime('today').strftime('%Y-%m-%d')
# '2019-03-27'
Để chỉ nhận được ngày từ dấu thời gian, hãy gọi Timestamp.date
.
pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)
Ngoài ra to_datetime
, bạn có thể khởi tạo trực tiếp một Timestamp
đối tượng bằng cách sử dụng,
pd.Timestamp('today') # pd.Timestamp('now')
# Timestamp('2019-04-18 03:43:33.233093')
pd.Timestamp('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 53, 46, 220068)
Nếu bạn muốn làm cho múi giờ Timestamp của bạn nhận biết, hãy chuyển múi giờ cho tz
đối số.
pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')
Nếu bạn đang làm việc với con lắc , có một số lựa chọn thú vị. Bạn có thể lấy dấu thời gian hiện tại bằng cách sử dụng now()
hoặc ngày hôm nay bằng cách sử dụngtoday()
.
import pendulum
pendulum.now()
# DateTime(2019, 3, 27, 0, 2, 41, 452264, tzinfo=Timezone('America/Los_Angeles'))
pendulum.today()
# DateTime(2019, 3, 27, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))
Ngoài ra, bạn cũng có thể nhận được tomorrow()
hoặcyesterday()
trực tiếp ngày mà không phải thực hiện bất kỳ số học timedelta bổ sung.
pendulum.yesterday()
# DateTime(2019, 3, 26, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))
pendulum.tomorrow()
# DateTime(2019, 3, 28, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))
Có nhiều tùy chọn định dạng có sẵn.
pendulum.now().to_date_string()
# '2019-03-27'
pendulum.now().to_formatted_date_string()
# 'Mar 27, 2019'
pendulum.now().to_day_datetime_string()
# 'Wed, Mar 27, 2019 12:04 AM'
Câu trả lời rất muộn, nhưng bạn có thể sử dụng:
import time
today = time.strftime("%Y-%m-%d")
# 2020-02-14
Bạn có thể dùng,
>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'
str(date.today())
vẫn còn tốt hơn
Tôi thích điều này, bởi vì điều này là đơn giản, nhưng có lẽ bằng cách nào đó không hiệu quả và lỗi. Bạn phải kiểm tra mã thoát của lệnh shell nếu bạn muốn chương trình chống lỗi mạnh .
os.system('date +%Y-%m-%d')