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


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


1955
2018-01-06 04:54


gốc




Các câu trả lời:


Sử dụng:

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

>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189

Và chỉ là thời gian:

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

>>> print(datetime.datetime.time(datetime.datetime.now()))
09:17:51.914526

Tương tự, nhưng hơi nhỏ gọn hơn:

>>> datetime.datetime.now().time()

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

Để lưu nhập, bạn có thể nhập datetime đối tượng từ datetime module:

>>> from datetime import datetime

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


2009
2018-01-06 04:57



datetime.datetime.now () và datetime.datetime.today () là giống nhau không? datetime.datetime.now (tz = None) nhận thông tin múi giờ nhưng datetime.datetime.today () không docs.python.org/3.6/library/datetime.html#datetime.datetime.now - Jun
@Jun Bình luận của bạn dường như là một câu trả lời của một số loại nhưng câu trả lời này không có gì để làm với today() bạn có chắc đây là bài đăng chính xác cho nhận xét của bạn không? - Mike - SMT
@ Mike-SMT Tôi chỉ muốn đưa ra nhận xét để những người khác không phải nhìn xung quanh vì tôi không biết sự khác biệt ngay từ đầu - Jun


Bạn có thể dùng time.strftime():

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

787
2018-01-06 04:59



Điều này có tốt hơn / tồi 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 time mô-đun so với datetime module? - frank


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 có thể đọc được nhanh chóng, có nhiều người hơn:

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

408
2018-05-04 00:56



Tất cả nó yêu cầu là để có được thời gian hiện tại, không phải để hiển thị nó. - ppperry
tại sao bí danh của module datetime lại quan trọng? tức là, tại sao không import datetime công việc? - Mike Palmice
@MikePalmice Nó hoạt động, nhưng bạn sẽ cần phải viết datetime.datetime.now(). - Gabriel


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

Đối với ví dụ này, đầu ra sẽ như sau: '2013-09-18 11:16:32'

Đây là danh sách strftime.


368
2018-01-09 05:50





Làm thế nào để có được thời gian hiện tại bằng Python?

Các time mô-đun

Các time module cung cấp các hàm cho chúng ta biết thời gian trong "giây kể từ thời đại" cũng như các tiện ích khác.

import time

Thời gian sử dụng Unix

Đây là định dạng bạn sẽ nhận được dấu thời gian để lưu trong cơ sở dữ liệu. Nó là một số dấu chấm độ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à nó là ánh sáng bộ nhớ so với các biểu diễn thời gian khác mà 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 nhảy, do đó, nó không phải là tuyến tính - giây nhảy được bỏ qua. Vì vậy, trong khi nó không phải là tương đương với các tiêu chuẩn UTC quốc tế, nó là gần gũi, và do đó khá tốt cho hầu hết các trường hợp lưu giữ hồ sơ.

Tuy nhiên, điều này không lý tưởng cho việc lên lịch của con người. Nếu bạn có một sự kiện trong tương lai 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 (chúng sẽ được mô tả sau).

time.ctime

Bạn cũng có thể thể hiện 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 tiêu chuẩn này trên tất cả các hệ thống, như tôi đã thấy những người khác mong đợi) . Điều này thường thân thiện với người dùng, nhưng không thường dẫn đến một chuỗi có thể sắp xếp theo thứ tự thời gian:

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

Bạn có thể hydrate timestamps thành dạng có thể đọc được bằng con người với ctime cũng:

>>> 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 bởi con người - và với cải thiện nhận dạng ký tự quang học và trí tuệ nhân tạo, tôi nghĩ số lượng các trường hợp này sẽ giảm đi).

datetime mô-đun

Các datetime module cũng khá hữu dụng ở đây:

>>> import datetime

datetime.datetime.now

Các datetime.now là một phương thức lớp trả về thời gian hiện tại. Nó sử dụng time.localtime mà không có thông tin múi giờ (nếu không được đưa ra, nếu không thấy múi giờ nhận thức bên dưới). Nó có một biểu 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 ép buộc đến một str), nó ở định dạng có thể đọc được (và gần như ISO), và loại từ điển tương đương với kiểu 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

datetime's 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à 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 cho Thời gian tiết kiệm ánh sáng ban ngày, người dùng của họ có thể chuyển sang múi giờ khác, như Giờ mùa hè của Anh, trong mùa hè.)

nhận biết múi giờ datetime

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

>>> 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ó timezone lớp học với một utc timezone trường hợp được đính kèm, cũng làm cho đối tượng nhận biết múi giờ (nhưng để chuyển đổi sang múi giờ khác mà không có tiện ích pytz module được để lại dưới dạng 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 sang 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ơ biết với pytz Múi giờ localize hoặ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 khu nghỉ dưỡng cuối cùng hơn là 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 pytz mô-đun cho phép chúng tôi thực hiện datetime đối tượng nhận biết múi giờ và chuyển đổi thời gian thành hàng trăm múi giờ có sẵn trong pytz mô-đun.

Người ta có thể tuần tự hóa đối tượng này cho thời gian và cửa hàng UTC cái đó trong một 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à chỉ lưu trữ thời gian của Unix Epoch, mà tôi đã chứng minh trước tiên.

Các cách xem thời gian khác 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ề múi giờ nào mà một chuỗi hoặc đối tượng datetime được nối tiếp được dự định.

Nếu bạn đang hiển thị thời gian với Python cho người dùng, ctime hoạt động độc đáo, không phải trong một bảng (nó thường không phân loại 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 nên, khi giao dịch với thời gian bằng Python, hoặc bằng cách sử dụng thời gian Unix, hoặc một thời gian nhận thức UTC datetime vật.


207
2018-02-18 05:08





Làm

from time import time

t = time()
  • t - số phao, 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.


113
2018-01-06 13:55





>>> 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 theo định dạng được chỉ định. Ngoài ra còn có một phương thức localtime ().

Điều này trang có thêm chi tiết.


83
2018-01-06 05:02





Tất cả các đề xuất tốt, nhưng tôi thấy nó dễ sử dụng nhất ctime() riêng tôi:

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

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


45
2017-10-31 15:39





Nếu bạn cần thời gian hiện tại như một time vật:

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

35
2017-12-27 10:24





Cách nhanh nhất là

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

32
2017-09-24 11:21





Đơn giản và dễ dàng:

Sử dụng datetime module,

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

Đầu ra:

2017-10-17 23:48:55

HOẶC LÀ

Sử dụng time,

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

Đầu ra:

2017-10-17 18:22:26

30
2017-10-17 18:24