2015-05-06 24 views
106

Tôi muốn nhận thời gian hiện tại bằng Python và gán chúng vào các biến như year, month, day, hour, minute. Làm thế nào điều này có thể được thực hiện trong Python 2.7?Làm thế nào để có được thời gian hiện tại trong python và chia thành năm, tháng, ngày, giờ, phút?

+1

http://stackoverflow.com/a/2158454/3994485 – sharpshadow

+0

thể trùng lặp của [Làm thế nào để có được thời gian hiện tại bằng Python] (http://stackoverflow.com/questions/415511/how-to-get -current-time-in-python) –

Trả lời

200

Module datetime là bạn của bạn:

import datetime 
now = datetime.datetime.now() 
print now.year, now.month, now.day, now.hour, now.minute, now.second 
# 2015 5 6 8 53 40 

Bạn không cần phải biến riêng biệt, các thuộc tính trên trở datetime đối tượng có mọi thứ bạn cần.

9

By giải nén timetuple của đối tượng datetime, bạn sẽ nhận được những gì bạn muốn:

from datetime import datetime 

n = datetime.now() 
t = n.timetuple() 
y, m, d, h, min, sec, wd, yd, i = t 
0

bạn có thể sử dụng mô-đun datetime để có được ngày hiện tại và Thời gian trong Python 2,7

import datetime 
print datetime.datetime.now() 

Output:

2015-05-06 14:44:14.369392 
+3

Điều này không trả lời được câu hỏi. –

21

Câu trả lời datetime ở trên là sạch hơn nhiều, nhưng bạn có thể làm điều đó với bản gốc python time mô-đun:

import time 
strings = time.strftime("%Y,%m,%d,%H,%M,%S") 
t = strings.split(',') 
numbers = [ int(x) for x in t ] 
print numbers 

Output:

[2016, 3, 11, 8, 29, 47] 
14

Dưới đây là một lớp lót mà đi theo ngay dưới dòng tối đa 80 char.

import time 
year, month, day, hour, minute = time.strftime("%Y,%m,%d,%H,%M").split(',') 
1

Ba thư viện để truy cập và thao tác ngày tháng và thời gian, cụ thể là datetime, mũi tên và con lắc, tất cả làm cho các mặt hàng này có sẵn trong namedtuples mà các phần tử có thể truy cập hoặc theo tên hoặc chỉ số. Hơn nữa, các mục có thể truy cập chính xác theo cùng một cách. (Tôi cho rằng nếu tôi thông minh hơn thì tôi sẽ không ngạc nhiên.)

>>> YEARS, MONTHS, DAYS, HOURS, MINUTES = range(5) 
>>> import datetime 
>>> import arrow 
>>> import pendulum 
>>> [datetime.datetime.now().timetuple()[i] for i in [YEARS, MONTHS, DAYS, HOURS, MINUTES]] 
[2017, 6, 16, 19, 15] 
>>> [arrow.now().timetuple()[i] for i in [YEARS, MONTHS, DAYS, HOURS, MINUTES]] 
[2017, 6, 16, 19, 15] 
>>> [pendulum.now().timetuple()[i] for i in [YEARS, MONTHS, DAYS, HOURS, MINUTES]] 
[2017, 6, 16, 19, 16] 
1

Đây là một câu hỏi cũ, nhưng tôi nghĩ ra một giải pháp mà tôi nghĩ những người khác có thể thích.

def get_current_datetime_as_dict(): 
n = datetime.now() 
t = n.timetuple() 
field_names = ["year", 
       "month", 
       "day", 
       "hour", 
       "min", 
       "sec", 
       "weekday", 
       "md", 
       "yd"] 
return dict(zip(field_names, t)) 

timetuple() có thể được nén với một mảng khác, tạo bộ ghi nhãn được gắn nhãn. Truyền từ đó sang từ điển và sản phẩm kết quả có thể được sử dụng với get_current_datetime_as_dict()['year'].

Điều này có chi phí cao hơn một chút so với một số giải pháp khác ở đây, nhưng tôi thấy rất tuyệt khi có thể truy cập các giá trị được đặt tên vì lợi ích của clartiy trong mã.

0
import time 
year = time.strftime("%Y") # or "%y" 
Các vấn đề liên quan