Cách lấy thời gian hiện tại bằng Python


2890

Các mô-đun / phương pháp được sử dụng để có được thời gian hiện tại là gì?


xin lưu ý, các câu trả lời được bình chọn nhiều nhất là về thời gian ngây thơ thời gian, trong khi chúng ta thấy rằng trong môi trường sản xuất, ngày càng có nhiều dịch vụ được kết nối với nhau và thời gian nhận biết múi giờ trở thành tiêu chuẩn bắt buộc
Sławomir Lenart

Câu trả lời:


3051

Sử dụng:

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)

>>> print(datetime.datetime.now())
2009-01-06 15:08:24.789150

Và chỉ thời gian:

>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)

>>> print(datetime.datetime.now().time())
15:08:24.789150

Xem tài liệu để biết thêm thông tin.

Để lưu kiểu gõ, bạn có thể nhập datetimeđối tượng từ datetimemô-đun:

>>> from datetime import datetime

Sau đó loại bỏ hàng đầu datetime.từ tất cả các bên trên.


25
Sẽ thật tuyệt nếu câu trả lời này bao gồm các múi giờ (có thể là UTC làm ví dụ) và có lẽ bắt đầu bằng time.time ().
Greg Lindahl

4
@Toskan định dạng không phải là một phần của câu hỏi, vì vậy nó không phải là một phần của câu trả lời. Đã có một liên kết được cung cấp cho nhiều tài liệu hơn về mô-đun có chứa những thứ như định dạng.
JiyuuSensei

Phiên bản nào của Python là câu trả lời ban đầu được đưa ra? Chỉ cần gõ datetime.datetime.now()vào bảng điều khiển tương tác Python 2.7 của tôi (IronPython chưa được cập nhật) sẽ cho tôi hành vi tương tự như ví dụ mới hơn sử dụng print()trong câu trả lời. Tôi đã không sao chép thành công những gì câu trả lời ban đầu hiển thị (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (Không phải tôi thực sự muốn, hành vi print () được ưa thích, nhưng tôi tò mò.)
RTHarston

@BobVicktor: Python 2.7, 3.7 và 3.8 đều đưa ra hành vi tương tự đối với tôi, không chắc bạn đang nhìn thấy gì.
Harley Holcombe

@HarleyHolcombe Hmm ... có lẽ đó là một thứ IronPython? Khi tôi tự gõ, datetime.now()nó sẽ in ra giống như câu trả lời của bạn cho thấy print(datetime.now())...
RTHarston

956

Bạn có thể sử dụng time.strftime():

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'

48
Điều này có tốt hơn / tệ hơn câu trả lời của @ ParaMeterz dưới đây không? Tại sao chúng ta nên sử dụng timemô-đun so với datetimemô-đun?
Nathan

3
Nó không trả về giờ hiện tại của máy tính của tôi.
Saeed

5
Đây là thời gian UTC, khác với mô-đun datetime
Voyager

5
@Saeed: Sử dụng chức năng localtime()thay vì gmtime()để lấy giờ địa phương của bạn.
Jeyekomon

3
@frank Xem câu hỏi liên quan về datetimevs time.
Packard CPW

621
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S')

Trong ví dụ này, đầu ra sẽ như thế này: '2013-09-18 11:16:32'

Dưới đây là danh sách các strftimechỉ thị .


456

Tương tự như câu trả lời của Harley , nhưng sử dụng str()chức năng cho định dạng dễ đọc, dễ đọc hơn một chút của con người:

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'

13
Tất cả những gì nó yêu cầu là để có được thời gian hiện tại, không hiển thị nó.
pppery

@ppperry, sau đó chỉ cần gán một biến cho câu trả lời của Ray - như: myTime = str (datetime.now ()) .
Lukas

2
Không liên quan; bước "str" ​​không nằm trong phạm vi của câu hỏi
pppery

4
@pppery Cũng không phải op nói rằng nó không phải là để có được một chuỗi thời gian. Các op không nói gì về những gì họ muốn làm với thời gian, vậy tại sao nó là một điều xấu khi chỉ ra làm thế nào để biến nó thành một chuỗi? Hầu hết các câu trả lời nói về việc lấy một chuỗi từ thời điểm đó, vì vậy nó dường như là một trường hợp sử dụng phổ biến, vậy tại sao lại bỏ qua câu trả lời của Ray? Sử dụng đơn giản là nhận được thời gian mà không biết làm bất cứ điều gì với nó? Bạn có thể in nó, hoặc làm toán trên nó, và chỉ có một vài câu trả lời chỉ ra cách làm toán trên nó, vì vậy tôi nghĩ rằng in / lấy một chuỗi là một cách sử dụng phổ biến. ;-) (Tôi biết đó là những gì tôi đã đến.)
RTHarston

1
Thực tế là câu trả lời này có hơn 440 upvote cho thấy rằng việc bổ sung nhỏ của phương thức chuỗi hữu ích cho nhiều người.
John

360

Làm cách nào để có được thời gian hiện tại trong Python?

Các timemô-đun

Các timemô-đun cung cấp chức năng cho chúng ta biết thời gian trong "giây kể từ khi kỷ nguyên" cũng như các tiện ích khác.

import time

Thời đại Epoch

Đây là định dạng bạn nên lấy dấu thời gian để lưu trong cơ sở dữ liệu. Đó là một số dấu phẩy động đơn giản có thể được chuyển đổi thành một số nguyên. Nó cũng tốt cho số học tính bằng giây, vì nó đại diện cho số giây kể từ ngày 1 tháng 1 năm 1970 00:00:00 và đó là ánh sáng bộ nhớ liên quan đến các đại diện khác của thời gian chúng ta sẽ xem xét tiếp theo:

>>> time.time()
1424233311.771502

Dấu thời gian này không tính đến giây nhuận, vì vậy nó không tuyến tính - giây nhuận bị bỏ qua. Vì vậy, mặc dù nó không tương đương với tiêu chuẩn UTC quốc tế, nhưng nó gần, và do đó khá tốt cho hầu hết các trường hợp lưu trữ hồ sơ.

Điều này không lý tưởng cho việc lập kế hoạch của con người, tuy nhiên. Nếu bạn có một sự kiện trong tương lai mà bạn muốn diễn ra tại một thời điểm nhất định, bạn sẽ muốn lưu trữ thời gian đó bằng một chuỗi có thể được phân tích cú pháp thành đối tượng datetime hoặc đối tượng datetime được tuần tự hóa (những điều này sẽ được mô tả sau).

time.ctime

Bạn cũng có thể biểu thị thời gian hiện tại theo cách mà hệ điều hành của bạn ưa thích (có nghĩa là nó có thể thay đổi khi bạn thay đổi tùy chọn hệ thống của mình, vì vậy đừng dựa vào điều này để trở thành tiêu chuẩn trên tất cả các hệ thống, như tôi đã thấy người khác mong đợi) . Điều này thường thân thiện với người dùng, nhưng thường không dẫn đến chuỗi người ta có thể sắp xếp theo thứ tự thời gian:

>>> time.ctime()
'Tue Feb 17 23:21:56 2015'

Bạn cũng có thể hydrat dấu thời gian thành dạng có thể đọc được của con người ctime:

>>> time.ctime(1424233311.771502)
'Tue Feb 17 23:21:51 2015'

Chuyển đổi này cũng không tốt cho việc lưu giữ hồ sơ (ngoại trừ trong văn bản sẽ chỉ được phân tích cú pháp bởi con người - và với Nhận dạng ký tự quang học và Trí tuệ nhân tạo được cải thiện, tôi nghĩ rằng số lượng các trường hợp này sẽ giảm đi).

datetime mô-đun

Các datetimemô-đun cũng khá hữu ích ở đây:

>>> import datetime

datetime.datetime.now

Đây datetime.nowlà một phương thức lớp trả về thời gian hiện tại. Nó sử dụng time.localtimemà không có thông tin múi giờ (nếu không được cung cấp, nếu không, hãy xem nhận biết múi giờ bên dưới). Nó có một đại diện (cho phép bạn tạo lại một đối tượng tương đương) lặp lại trên vỏ, nhưng khi được in (hoặc bị ép buộc thành a str), nó ở định dạng có thể đọc được (và gần như ISO) của con người, và sắp xếp từ vựng tương đương với sắp xếp theo thứ tự thời gian:

>>> datetime.datetime.now()
datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
>>> print(datetime.datetime.now())
2015-02-17 23:43:51.782461

thời gian utcnow

Bạn có thể nhận được một đối tượng datetime trong thời gian UTC, một tiêu chuẩn toàn cầu, bằng cách thực hiện điều này:

>>> datetime.datetime.utcnow()
datetime.datetime(2015, 2, 18, 4, 53, 28, 394163)
>>> print(datetime.datetime.utcnow())
2015-02-18 04:53:31.783988

UTC là một tiêu chuẩn thời gian gần tương đương với múi giờ GMT. (Mặc dù GMT và UTC không thay đổi theo Giờ tiết kiệm ánh sáng ban ngày, người dùng của họ có thể chuyển sang các múi giờ khác, như Giờ mùa hè của Anh, trong Mùa hè.)

nhận biết múi giờ

Tuy nhiên, không có đối tượng datetime nào chúng tôi tạo ra cho đến nay có thể dễ dàng chuyển đổi thành các múi giờ khác nhau. Chúng ta có thể giải quyết vấn đề đó với pytzmô-đun:

>>> import pytz
>>> then = datetime.datetime.now(pytz.utc)
>>> then
datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>)

Tương tự, trong Python 3, chúng ta có timezonelớp có một timezoneđối tượng utc được đính kèm, điều này cũng làm cho múi giờ đối tượng nhận biết (nhưng để chuyển đổi sang múi giờ khác mà không có pytzmô-đun tiện dụng được để lại như một bài tập cho người đọc):

>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc)

Và chúng ta thấy chúng ta có thể dễ dàng chuyển đổi thành các múi giờ từ đối tượng utc ban đầu.

>>> print(then)
2015-02-18 04:55:58.753949+00:00
>>> print(then.astimezone(pytz.timezone('US/Eastern')))
2015-02-17 23:55:58.753949-05:00

Bạn cũng có thể làm cho một đối tượng datetime ngây thơ nhận biết bằng phương thức pytzmúi giờ localizehoặc bằng cách thay thế thuộc tính tzinfo (với replace, điều này được thực hiện một cách mù quáng), nhưng đây là những biện pháp cuối cùng hơn là cách thực hành tốt nhất:

>>> pytz.utc.localize(datetime.datetime.utcnow())
datetime.datetime(2015, 2, 18, 6, 6, 29, 32285, tzinfo=<UTC>)
>>> datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
datetime.datetime(2015, 2, 18, 6, 9, 30, 728550, tzinfo=<UTC>)

Các pytzmô-đun cho phép chúng ta làm cho chúng tôi datetimeđối tượng TimeZone nhận thức và chuyển đổi lần đến hàng trăm múi giờ có sẵn trong các pytzmô-đun.

Người ta có thể tuần tự hóa đối tượng này theo thời gian UTC và lưu trữ trong cơ sở dữ liệu, nhưng nó sẽ đòi hỏi nhiều bộ nhớ hơn và dễ bị lỗi hơn là lưu trữ thời gian Unix Epoch, mà tôi đã trình bày trước tiên.

Các cách khác của thời gian xem dễ bị lỗi hơn nhiều, đặc biệt là khi xử lý dữ liệu có thể đến từ các múi giờ khác nhau. Bạn muốn không có sự nhầm lẫn về việc múi giờ hoặc đối tượng datetime được xê-ri hóa được dự định sử dụng.

Nếu bạn đang hiển thị thời gian với Python cho người dùng, hãy ctimehoạt động độc đáo, không phải trong một bảng (nó thường không được sắp xếp tốt), nhưng có lẽ trong một chiếc đồng hồ. Tuy nhiên, cá nhân tôi khuyên bạn, khi xử lý thời gian trong Python, sử dụng thời gian Unix hoặc datetimeđối tượng UTC nhận biết múi giờ .


133

Làm

from time import time

t = time()
  • t - số float, tốt cho phép đo khoảng thời gian.

Có một số khác biệt cho nền tảng Unix và Windows.


Kết quả của tôi trên Windows 10 home là 1576095264.2682993 - đối với Windows, điều này có thể chỉ cho thời gian tính bằng giây.
PythonMaster202

101
>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

Điều đó xuất ra GMT hiện tại ở định dạng được chỉ định. Ngoài ra còn có một localtime()phương pháp.

Đây trang có thêm chi tiết.


69

Các câu trả lời trước đây đều là những gợi ý hay, nhưng tôi thấy nó dễ sử dụng nhất ctime():

In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'

Điều này cung cấp một đại diện chuỗi được định dạng độc đáo của giờ địa phương hiện tại.


OP hỏi làm thế nào để có được thời gian chứ không phải làm thế nào để hiển thị nó!
TheTechRobo36414519

58

Cách nhanh nhất là:

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'

52

Nếu bạn cần thời gian hiện tại như một timeđối tượng:

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)

36

.isoformat() có trong tài liệu, nhưng chưa có ở đây (điều này rất giống với câu trả lời của @Ray Vega):

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'

35

Tại sao không hỏi Đài quan sát hải quân Hoa Kỳ , máy chấm công chính thức của Hải quân Hoa Kỳ?

import requests
from lxml import html

page = requests.get('http://tycho.usno.navy.mil/cgi-bin/timer.pl')
tree = html.fromstring(page.content)
print(tree.xpath('//html//body//h3//pre/text()')[1])

Nếu bạn sống ở khu vực DC (như tôi), độ trễ có thể không quá tệ ...


18
@ C8H10N4O2 Mặc dù bạn đúng rằng các câu trả lời khác cho rằng máy tính của bạn đã biết đúng thời gian, nhưng câu trả lời này giả định rằng máy tính có kết nối với internet, rằng bạn đang ở Mỹ và họ sẽ không bao giờ gỡ bỏ tệp đó / thay đổi liên kết. Nhiều giả định trong câu trả lời này hơn được chấp nhận. Vẫn thông minh không kém
sudobangbang

33

Sử dụng gấu trúc để có được thời gian hiện tại, loại vấn đề quá mức cần thiết:

import pandas as pd
print(pd.datetime.now())
print(pd.datetime.now().date())
print(pd.datetime.now().year)
print(pd.datetime.now().month)
print(pd.datetime.now().day)
print(pd.datetime.now().hour)
print(pd.datetime.now().minute)
print(pd.datetime.now().second)
print(pd.datetime.now().microsecond)

Đầu ra:

2017-09-22 12:44:56.092642
2017-09-22
2017
9
22
12
44
56
92693

28

Đây là những gì tôi đã kết thúc với:

>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")
01/09/2015 13:11

Ngoài ra, bảng này là một tài liệu tham khảo cần thiết để chọn mã định dạng phù hợp để lấy ngày được định dạng theo cách bạn muốn (từ tài liệu "datetime" của Python ở đây ).

bảng mã định dạng strftime


2
strftime(time_format)trả về thời gian cục bộ hiện tại dưới dạng một chuỗi tương ứng với chuỗi đã cho time_format. Lưu ý: time.strftime()datetime.strftime()hỗ trợ các bộ chỉ thị khác nhau, ví dụ, %zkhông được hỗ trợ bởi time.strftime()Python 2 .
JFS

1
Có phải thực hành tốt hơn để sử dụng datetime thay vì thời gian?
Kristen G.

2
Nhiều timechức năng mô-đun là các hàm bao mỏng xung quanh các hàm C tương ứng. datetimelà một cấp độ cao hơn và nó thường là di động hơn.
JFS

24

nếu bạn đang sử dụng numpy rồi thì bạn có thể sử dụng hàm numpy.datetime64 ().

import numpy as np
str(np.datetime64('now'))

chỉ ngày

str(np.datetime64('today'))

hoặc, nếu bạn đã sử dụng gấu trúc rồi thì bạn có thể sử dụng hàm pandas.to_datetime ()

import pandas as pd
str(pd.to_datetime('now'))

hoặc là,

str(pd.to_datetime('today'))

23

Bạn có thể sử dụng timemô-đun:

import time
print time.strftime("%d/%m/%Y")

>>> 06/02/2015

Việc sử dụng vốn Ycho cả năm, và sử dụng ysẽ cho 06/02/15.

Bạn cũng có thể sử dụng đoạn mã sau để có thời gian dài hơn:

time.strftime("%a, %d %b %Y %H:%M:%S")
>>> 'Fri, 06 Feb 2015 17:45:09'

20

datetime.now()trả về thời gian hiện tại dưới dạng đối tượng datetime ngây thơ đại diện cho thời gian trong múi giờ địa phương. Giá trị đó có thể không rõ ràng, ví dụ, trong quá trình chuyển đổi DST ("quay lại"). Để tránh sự mơ hồ, nên sử dụng múi giờ UTC:

from datetime import datetime

utc_time = datetime.utcnow()
print(utc_time) # -> 2014-12-22 22:48:59.916417

Hoặc một đối tượng nhận biết múi giờ có thông tin múi giờ tương ứng được đính kèm (Python 3.2+):

from datetime import datetime, timezone

now = datetime.now(timezone.utc).astimezone()
print(now) # -> 2014-12-23 01:49:25.837541+03:00

18
import datetime
date_time = datetime.datetime.now()

date = date_time.date()  # Gives the date
time = date_time.time()  # Gives the time

print date.year, date.month, date.day
print time.hour, time.minute, time.second, time.microsecond

Làm dir(date)hoặc bất kỳ biến bao gồm cả gói. Bạn có thể nhận được tất cả các thuộc tính và phương thức liên quan đến biến.


@snofty và @ user1016274, nếu import datetimeđó là datetime.datetime.now()\ n nếu from datetime import datetimeđó làdatetime.now()
theBuzzyCoder

17
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'

Tôi nghĩ bạn muốn nói "datetime.now (). Strftime (...)"
hlin117

vâng nó có thể được thực hiện như bạn nói. "datetime.datetime.now (). strftime ("% H:% M:% S:% MS ")"
user2030113

3
% MS không cung cấp cho bạn mili giây !!
ZF007

15

Theo mặc định, now()hàm trả về đầu ra ở YYYY-MM-DD HH:MM:SS:MSđịnh dạng. Sử dụng tập lệnh mẫu bên dưới để lấy ngày và giờ hiện tại trong tập lệnh Python và in kết quả trên màn hình. Tạo tập tin getDateTime1.pyvới nội dung dưới đây.

import datetime

currentDT = datetime.datetime.now()
print (str(currentDT))

Đầu ra trông như dưới đây:

2018-03-01 17:03:46.759624

14

Câu hỏi này không cần câu trả lời mới chỉ vì nó ... một đồ chơi / mô-đun mới sáng bóng, tuy nhiên, là đủ biện minh. Đó là thư viện Pendulum , dường như thực hiện những thứ mà mũi tên đã cố gắng, ngoại trừ không có lỗi và lỗi cố hữu mà mũi tên bao vây.

Chẳng hạn, câu trả lời cho câu hỏi ban đầu:

>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.now('utc'))
2018-08-13T19:29:35.051023+00:00

Có rất nhiều tiêu chuẩn cần giải quyết, bao gồm nhiều RFC và ISO, phải lo lắng. Bao giờ làm cho chúng lẫn lộn; đừng lo lắng dir(pendulum.constants), mặc dù vậy, hãy nhìn vào Có nhiều hơn một chút so với các định dạng RFC và ISO ở đó.

Khi chúng ta nói địa phương, mặc dù chúng ta có ý nghĩa gì? Ý tôi là

>>> print(pendulum.now().timezone_name)
Australia/Melbourne
>>>

Có lẽ hầu hết phần còn lại của bạn có nghĩa là một nơi khác.

Và trên đó đi. Câu chuyện dài ngắn: Pendulum cố gắng thực hiện cho ngày và thời gian những yêu cầu đã làm cho HTTP. Nó đáng để xem xét, đặc biệt là về cả tính dễ sử dụng và tài liệu mở rộng.


13

Thời gian hiện tại của múi giờ

from datetime import datetime
import pytz

tz_NY = pytz.timezone('America/New_York') 
datetime_NY = datetime.now(tz_NY)
print("NY time:", datetime_NY.strftime("%H:%M:%S"))

tz_London = pytz.timezone('Europe/London')
datetime_London = datetime.now(tz_London)
print("London time:", datetime_London.strftime("%H:%M:%S"))

tz_India = pytz.timezone('Asia/India')
datetime_India = datetime.now(tz_India)
print("India time:", datetime_India.strftime("%H:%M:%S"))

#list timezones
pytz.all_timezones

12

Hãy thử mô-đun mũi tên từ http://crsmithdev.com/arrow/ :

import arrow
arrow.now()

Hoặc phiên bản UTC:

arrow.utcnow()

Để thay đổi đầu ra của nó, hãy thêm .format ():

arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ')

Đối với múi giờ cụ thể:

arrow.now('US/Pacific')

Một giờ trước:

arrow.utcnow().replace(hours=-1)

Hoặc nếu bạn muốn ý chính.

arrow.get('2013-05-11T21:23:58.970460+00:00').humanize()
>>> '2 years ago'

5
hãy cẩn thận arrow.now('Time/Zone')với một số múi giờ ( arrowsử dụng dateutilđã bị hỏng utc -> chuyển đổi cục bộ được sử dụng bên trong arrow.now(). Lưu ý: pytzkhông có vấn đề như vậy . Ngoài ra, có các vấn đề khác liên quan đến múi giờ
jfs

12

Tôi muốn có được thời gian với mili giây. Một cách đơn giản để có được chúng:

import time, datetime

print(datetime.datetime.now().time())                         # 11:20:08.272239

# Or in a more complicated way
print(datetime.datetime.now().time().isoformat())             # 11:20:08.272239
print(datetime.datetime.now().time().strftime('%H:%M:%S.%f')) # 11:20:08.272239

# But do not use this:
print(time.strftime("%H:%M:%S.%f", time.localtime()), str)    # 11:20:08.%f

Nhưng tôi chỉ muốn một phần nghìn giây , phải không? Cách ngắn nhất để có được chúng:

import time

time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 1000)
# 11:34:23.751

Thêm hoặc xóa các số 0 từ phép nhân cuối cùng để điều chỉnh số điểm thập phân hoặc chỉ:

def get_time_str(decimal_points=3):
    return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)

1
Điều này hoạt động trong Python 3: time.strftime ("% H:% M:% S", time.localtime ()) + '. {}'. Format (int (time.time ()% 1 * 1000))
Greg Graham

11

Bạn có thể sử dụng chức năng này để lấy thời gian (thật không may là nó không nói AM hoặc PM):

def gettime():
    from datetime import datetime
    return ((str(datetime.now())).split(' ')[1]).split('.')[0]

Để có được giờ, phút, giây và mili giây để hợp nhất sau này, bạn có thể sử dụng các chức năng sau:

Giờ:

def gethour():
    from datetime import datetime
    return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0]

Phút:

def getminute():
    from datetime import datetime
    return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1]

Thứ hai:

def getsecond():
    from datetime import datetime
    return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2]

Một phần nghìn giây:

def getmillisecond():
    from datetime import datetime
    return (str(datetime.now())).split('.')[1]

10

Nếu bạn chỉ muốn dấu thời gian hiện tại tính bằng ms (ví dụ: để đo thời gian thực hiện), bạn cũng có thể sử dụng mô-đun "timeit":

import timeit
start_time = timeit.default_timer()
do_stuff_you_want_to_measure()
end_time = timeit.default_timer()
print("Elapsed time: {}".format(end_time - start_time))

8

Sau đây là những gì tôi sử dụng để có được thời gian mà không cần phải định dạng. Một số người không thích phương pháp phân tách, nhưng nó rất hữu ích ở đây:

from time import ctime
print ctime().split()[3]

Nó sẽ in ở định dạng HH: MM: SS.


8

Bởi vì chưa có ai đề cập đến nó và đây là điều mà tôi đã gặp gần đây ... phương pháp fromutc () của pzonez kết hợp với utcnow () của datetime là cách tốt nhất mà tôi tìm thấy để có được thời gian hiện tại (và ngày) hữu ích trong bất kỳ múi giờ nào.

from datetime import datetime

import pytz


JST = pytz.timezone("Asia/Tokyo")


local_time = JST.fromutc(datetime.utcnow())

Nếu tất cả những gì bạn muốn là thời gian, thì bạn có thể có được điều đó với local_time.time().


Đáng ngạc nhiên, tất cả các câu trả lời trên không đề cập đến múi giờ. bạn cũng nên bao gồm strftime để có được định dạng bạn muốn.
Đồ họa

1
Tôi không bao gồm điều đó vì nó đã được đề cập trong các câu trả lời khác (và định dạng hiển thị không phải là một phần của câu hỏi).
kungphu

7

Câu hỏi này dành cho Python nhưng vì Django là một trong những khung được sử dụng rộng rãi nhất cho Python, nên điều quan trọng cần lưu ý là nếu bạn đang sử dụng Django, bạn luôn có thể sử dụng timezone.now()thay vì datetime.datetime.now(). Cái trước là múi giờ 'nhận thức' trong khi cái trước thì không.

Xem câu trả lời SO nàytài liệu Django để biết chi tiết và lý do đằng sau timezone.now().

from django.utils import timezone

now = timezone.now()

7

Bạn có thể làm như vậy bằng ctime ():

from time import time, ctime
t = time()
ctime(t)

đầu ra:

Sat Sep 14 21:27:08 2019

Các đầu ra này khác nhau vì dấu thời gian được trả về ctime()phụ thuộc vào vị trí địa lý của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.