Tên phương pháp
đồng dạng
Chữ ký phương thức
isoformat[sep='T', timespec='auto']
Tổng quan
- Phương thức isoformat[] của lớp datetime trả về một chuỗi ngày, giờ chứa các thông tin sau
- Ngày tháng
- Thời gian
- UTC bù vào múi giờ tương ứng
như được chỉ định trong tiêu chuẩn ISO 8601
- Ký tự phân cách sẽ được in giữa các trường ngày và giờ
Thông số
sep - Ký tự phân cách sẽ được in giữa các trường ngày và giờ. Đây là Thông số tùy chọn có giá trị mặc định là "T"
timespec - Trình xác định định dạng cho thông số thời gian. Đây là Thông số tùy chọn có giá trị mặc định là "tự động"
Các giá trị là,
tự động. Khi giá trị là tự động, thành phần thời gian sẽ được in trong HH. MM. định dạng SS. Nếu thành phần micro giây có sẵn, nó sẽ được in. Nếu không, micro giây sẽ bị bỏ qua thay vì in bằng 0
giờ. Khi giá trị là giờ, thành phần thời gian sẽ chỉ có Giờ ở định dạng HH. Lưu ý rằng, thành phần múi giờ khác với thành phần thời gian
phút. Nếu phút được chỉ định, thành phần thời gian sẽ chỉ có Giờ và Phút được in bằng HH. định dạng MM
giây. Nếu giây được chỉ định, thành phần thời gian sẽ được in bằng HH. MM. định dạng SS
mili giây. Nếu mili giây được chỉ định, thành phần thời gian sẽ được in bằng HH. MM. SS. định dạng mmm, trong đó mmm là mili giây. Micro giây sẽ bị loại trừ
micro giây. Nếu micro giây được chỉ định, thời gian thành phần thời gian sẽ được in bằng HH. MM. định dạng mmmmmm, trong đó mmmmmm là micro giây
Tôi đã chơi với các kỹ năng của Alexa vài ngày trước. Tôi tình cờ phát hiện ra loại vị trí chuyển đổi ngày và ngày mà người dùng nói thành chuỗi có định dạng ISO. cho e. g. Hãy xem xét một kỹ năng gọi là Weather Man, cung cấp thông tin thời tiết cho một ngày nhất định. Nó có ý định với cách nói như
>>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
0. Giả sử, ngày hôm nay là >>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
1 và người dùng đã thốt ra điều gì đó như >>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
2. Trong yêu cầu đến điểm cuối kỹ năng, giá trị của vị trí ngày sẽ được điền là >>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
3, ở định dạng YYYY-MM-DD. Nếu ngày được hỏi là một tuần, thì ô ngày sẽ được điền theo định dạng YYYY-Www, trong đó ww là số tuần. Nếu ngày được hỏi là cuối tuần, thì định dạng theo sau là YYYY-Www-WE. Nếu người dùng thốt ra điều gì đó như >>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
4, nó sẽ chuyển thành 2020-W02-WE trong ví dụ của chúng tôi. Đây là một đoạn về cách yêu cầu kỹ năng json muốn. Định dạng khác nhau tùy thuộc vào cách nói "request": {
"type": "IntentRequest",
"requestId": "amzn1.echo-api.request.24954898-006a-4d29-b3ea-808ce886ed3e",
"timestamp": "2020-01-10T04:54:54Z",
"locale": "en-US",
"intent": {
"name": "WeatherIntent",
"confirmationStatus": "NONE",
"slots": {
"date": {
"name": "date",
"value": "2020-W02-WE",
"confirmationStatus": "NONE",
"source": "USER"
}
}
}
}
Tôi muốn phân tích chuỗi ngày này ở điểm cuối kỹ năng và phản hồi người dùng tương ứng. Vì điểm cuối được lưu trữ dưới dạng hàm python trong AWS Lambda, nên tôi đã xem xét tài liệu tham khảo về python, trang tài liệu
Nếu định dạng ngày là YYYY-MM-DD, thì
>>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
0 của Python có một số trình trợ giúp tiện lợi để chuyển đổi chuỗi ngày thành đối tượng ngày giờ>>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
Thật không may,
>>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
1 chỉ được giới thiệu trong Python 3. 7 và >>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
2 đã được giới thiệu trong 3. 8 nhưng tôi chỉ sử dụng 3. 6 với điểm cuối kỹ năng của tôi. Vì vậy, tôi không thể sử dụng chúng trực tiếp. Ngoài ra, tôi cũng muốn phân tích các định dạng ngày khác. Vì vậy, hãy quay lại với người bạn cũ, tương tự như strptime trong CCác chỉ định định dạng bắt buộc cho các trường ngày trong trường hợp này là
FieldFormat specifiernăm có 4 chữ số%Ytháng có 2 chữ số%mngày của tháng có 2 chữ số%dweek number%U, %WĐối với số tuần,
3 được sử dụng nếu tuần bắt đầu từ Chủ Nhật và>>> import datetime >>> datestr = "2020-01-10" >>> dt = datetime.datetime.fromisoformat[datestr] >>> dt datetime.datetime[2020, 1, 10, 0, 0]
4 nếu tuần bắt đầu từ Thứ Hai>>> import datetime >>> datestr = "2020-01-10" >>> dt = datetime.datetime.fromisoformat[datestr] >>> dt datetime.datetime[2020, 1, 10, 0, 0]
Trăn 3. 6 đã thêm ba định dạng định dạng mới phù hợp với tiêu chuẩn ISO 8601. amazon. Khe DATE cũng sử dụng các tiêu chuẩn tương tự. Các định dạng định dạng mới là
FormatDescription%GISO 8601 năm%uISO 8601 ngày trong tuần, bắt đầu từ Thứ Hai%VISO 8601 tuần dưới dạng số thập phânNếu ngày ở định dạng YYYY-MM-DD, định dạng
>>> import datetime
>>> datestr = "2020-01-10"
>>> dt = datetime.datetime.fromisoformat[datestr]
>>> dt
datetime.datetime[2020, 1, 10, 0, 0]
5 hoạt động tốt________số 8
Khi chỉ có số tuần, cũng cần phải chỉ định ngày trong tuần khi sử dụng các chỉ thị dựa trên ISO 8601
>>> datestr = "2020-W02"
>>> datetime.datetime.strptime[datestr, "%G-W%V"]
Traceback [most recent call last]:
File "", line 1, in
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime[data_string, format]
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_strptime.py", line 483, in _strptime
raise ValueError["ISO year directive '%G' must be used with "
ValueError: ISO year directive '%G' must be used with the ISO week directive '%V' and a weekday directive ['%A', '%a', '%w', or '%u'].
>>> datestr = "2020-W03"
>>> datetime.datetime.strptime[datestr+"-2", "%G-W%V-%u"]
datetime.datetime[2020, 1, 14, 0, 0]
>>> datestr = "2020-W01"
>>> datetime.datetime.strptime[datestr+"-2", "%G-W%V-%u"]
datetime.datetime[2019, 12, 31, 0, 0]
>>> datestr = "2020-W01-WE"
>>> datetime.datetime.strptime[datestr+"-6", "%G-W%V-WE-%u"]
datetime.datetime[2020, 1, 4, 0, 0]
>>> datetime.datetime.strptime[datestr+"-7", "%G-W%V-WE-%u"].isocalendar[]
[2020, 1, 7]
Khi đối tượng datetime được tạo, chúng ta có thể thực hiện các thao tác tiếp theo như tính toán số delta, định dạng ngày/giờ thành định dạng khác, v.v. Nhiều lần, điều quan trọng là phải lấy thời gian dựa trên múi giờ. Các chỉ thị dựa trên ISO 8601 chưa cung cấp hỗ trợ để chỉ định múi giờ. Vì vậy, tôi phải tạo đối tượng ngày giờ và sau đó thêm thông tin múi giờ. Đây là một ví dụ