Python timetuple mili giây

Trong bài viết này, chúng ta sẽ thảo luận về các cách khác nhau để truy xuất thời gian hiện tại tính bằng mili giây trong python

Thời gian sử dụng. phương thức thời gian []

Mô-đun thời gian trong python cung cấp các phương thức và chức năng khác nhau liên quan đến thời gian. Ở đây chúng tôi sử dụng thời gian. time[] để lấy thời gian CPU hiện tại tính bằng giây. Thời gian được tính từ kỷ nguyên. Nó trả về một số dấu phẩy động được biểu thị bằng giây. Và sau đó, giá trị này được nhân với 1000 và làm tròn bằng hàm round[]

GHI CHÚ. Epoch là điểm bắt đầu của thời gian và phụ thuộc vào nền tảng. Kỷ nguyên là ngày 1 tháng 1 năm 1970, 00. 00. 00 [UTC] trên Windows và hầu hết các hệ thống Unix và giây nhuận không được tính vào thời gian tính bằng giây kể từ kỷ nguyên

chúng tôi sử dụng thời gian. gmtime[0] để lấy kỷ nguyên trên một nền tảng nhất định

cú pháp

Cú pháp của phương thức time[] như sau

time.time[]

Trả về một giá trị float đại diện cho số giây kể từ kỷ nguyên

Ví dụ

Trong mã ví dụ sau, chúng tôi nhận được thời gian hiện tại tính bằng mili giây bằng cách sử dụng các hàm khác nhau được cung cấp bởi mô-đun datetime của python

Bắt đầu với NumPy 1. 7, có các kiểu dữ liệu mảng lõi vốn hỗ trợ chức năng ngày giờ. Kiểu dữ liệu được gọi, được đặt tên như vậy vì nó đã được thư viện chuẩn Python lấy

Datetime64 Quy ước và Giả định

Tương tự như lớp Python, ngày được thể hiện trong Lịch Gregorian hiện tại, được mở rộng vô thời hạn cả trong tương lai và trong quá khứ. Trái ngược với Python, chỉ hỗ trợ các năm trong phạm vi 1 AD - 9999 AD, cũng cho phép các ngày trước Công nguyên; . e. năm 2 TCN được đánh số −1, năm 1 TCN được đánh số 0, năm 1 AD được đánh số 1

Thời gian tức thời, giả sử 16. 23. 32. 234, được biểu thị đếm giờ, phút, giây và phân số từ nửa đêm. tôi. e. 00. 00. 00. 000 là nửa đêm, 12. 00. 00. 000 là buổi trưa, v.v. Mỗi ngày dương lịch có đúng 86400 giây. Đây là thời gian “ngây thơ”, không có khái niệm rõ ràng về múi giờ hoặc thang thời gian cụ thể [UT1, UTC, TAI, v.v. ].

[]

Lịch thu được bằng cách mở rộng lịch Gregorian trước khi chính thức được thông qua vào tháng 10. Ngày 15 tháng 1 năm 1582 được gọi là Lịch Gregorian Proleptic

[]

Giả định 86400 giây mỗi ngày theo lịch không hợp lệ đối với UTC, thang thời gian dân sự ngày nay. Trên thực tế, do sự hiện diện của giây nhuận trong những dịp hiếm hoi, một ngày có thể dài 86401 hoặc 86399 giây. Ngược lại, giả định ngày 86400 đúng với thang thời gian TAI. Hỗ trợ rõ ràng cho chuyển đổi TAI và TAI sang UTC, tính theo giây nhuận, đã được đề xuất nhưng chưa được triển khai. Xem thêm phần bên dưới

Ngày giờ cơ bản

Cách cơ bản nhất để tạo thời gian biểu là từ các chuỗi ở định dạng ngày tháng hoặc ngày giờ theo tiêu chuẩn ISO 8601. Cũng có thể tạo thời gian dữ liệu từ một số nguyên bằng cách bù tương ứng với Unix epoch [00. 00. 00 UTC ngày 1 tháng 1 năm 1970]. Đơn vị lưu trữ nội bộ được chọn tự động từ dạng chuỗi và có thể là một hoặc một. Đơn vị ngày là năm ['Y'], tháng ['M'], tuần ['W'] và ngày ['D'], trong khi đơn vị thời gian là giờ ['h'], phút ['m' ], giây ['s'], mili giây ['ms'] và một số đơn vị giây dựa trên tiền tố SI bổ sung. Kiểu dữ liệu cũng chấp nhận chuỗi "NAT", trong bất kỳ tổ hợp chữ thường/chữ hoa nào, cho giá trị "Không phải lúc"

Ví dụ

Ngày ISO đơn giản

>>> np.datetime64['2005-02-25']
numpy.datetime64['2005-02-25']

Từ một số nguyên và một đơn vị ngày, 1 năm kể từ kỷ nguyên UNIX

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']

Sử dụng tháng cho đơn vị

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']

Chỉ định tháng, nhưng buộc đơn vị 'ngày'

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']

Từ một ngày và thời gian

>>> np.datetime64['2005-02-25T03:30']
numpy.datetime64['2005-02-25T03:30']

NAT [không phải là thời gian]

>>> np.datetime64['nat']
numpy.datetime64['NaT']

Khi tạo một mảng ngày giờ từ một chuỗi, vẫn có thể tự động chọn đơn vị từ các đầu vào, bằng cách sử dụng loại ngày giờ với các đơn vị chung

Ví dụ

>>> np.array[['2007-07-13', '2006-01-13', '2010-08-13'], dtype='datetime64']
array[['2007-07-13', '2006-01-13', '2010-08-13'], dtype='datetime64[D]']

________số 8_______

Một mảng thời gian có thể được tạo từ các số nguyên biểu thị dấu thời gian POSIX với đơn vị đã cho

Ví dụ

>>> np.array[[0, 1577836800], dtype='datetime64[s]']
array[['1970-01-01T00:00:00', '2020-01-01T00:00:00'],
      dtype='datetime64[s]']

>>> np.array[[0, 1577836800000]].astype['datetime64[ms]']
array[['1970-01-01T00:00:00.000', '2020-01-01T00:00:00.000'],
      dtype='datetime64[ms]']

Loại datetime hoạt động với nhiều hàm NumPy phổ biến, ví dụ có thể được sử dụng để tạo phạm vi ngày

Ví dụ

Tất cả các ngày trong một tháng

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
0

Đối tượng datetime đại diện cho một thời điểm duy nhất. Nếu hai mốc thời gian có các đơn vị khác nhau, thì chúng vẫn có thể biểu thị cùng một thời điểm và việc chuyển đổi từ đơn vị lớn hơn như tháng sang đơn vị nhỏ hơn như ngày được coi là cách truyền 'an toàn' vì thời điểm vẫn được biểu thị chính xác

Ví dụ

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
1

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
2

Không dùng nữa kể từ phiên bản 1. 11. 0. NumPy không lưu trữ thông tin múi giờ. Để tương thích ngược, datetime64 vẫn phân tích cú pháp chênh lệch múi giờ mà nó xử lý bằng cách chuyển đổi thành UTC±00. 00 [giờ Zulu]. Hành vi này không được dùng nữa và sẽ phát sinh lỗi trong tương lai.

Datetime và Timedelta Số học

NumPy cho phép phép trừ hai giá trị ngày giờ, một thao tác tạo ra một số có đơn vị thời gian. Vì NumPy không có hệ thống đại lượng vật lý trong lõi nên kiểu dữ liệu đã được tạo để bổ sung cho nó. Các đối số cho là một số, để biểu thị số lượng đơn vị và đơn vị ngày/giờ, chẳng hạn như [D]ay, [M]onth, [Y]ear, [h]ours, [m]inutes hoặc [ s] giây. Kiểu dữ liệu cũng chấp nhận chuỗi "NAT" thay cho số cho giá trị "Không phải lúc"

Ví dụ

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
3

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
4

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
5

Datetimes và Timedeltas phối hợp với nhau để cung cấp các cách tính toán datetime đơn giản

Ví dụ

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
6

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
7

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
8

>>> np.datetime64[1, 'Y']
numpy.datetime64['1971']
9

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
0

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
1

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
2

Có hai đơn vị Timedelta ['Y', năm và 'M', tháng] được xử lý đặc biệt, vì chúng thay đổi bao nhiêu thời gian tùy thuộc vào thời điểm chúng được sử dụng. Trong khi một đơn vị ngày timedelta tương đương với 24 giờ, không có cách nào để chuyển đổi đơn vị tháng thành ngày, vì các tháng khác nhau có số ngày khác nhau

Ví dụ

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
3

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
4

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
5

Đơn vị ngày giờ

Các kiểu dữ liệu Datetime và Timedelta hỗ trợ một số lượng lớn đơn vị thời gian, cũng như các đơn vị chung có thể được ép buộc vào bất kỳ đơn vị nào khác dựa trên dữ liệu đầu vào

Ngày giờ luôn được lưu trữ với kỷ nguyên 1970-01-01T00. 00. Điều này có nghĩa là các ngày được hỗ trợ luôn là một khoảng đối xứng xung quanh kỷ nguyên, được gọi là "khoảng thời gian" trong bảng bên dưới

Độ dài của khoảng là phạm vi của số nguyên 64 bit nhân với độ dài của ngày hoặc đơn vị. Ví dụ: khoảng thời gian cho 'W' [tuần] dài hơn chính xác 7 lần so với khoảng thời gian cho 'D' [ngày] và khoảng thời gian cho 'D' [ngày] dài hơn chính xác 24 lần so với khoảng thời gian cho 'h' [giờ]

Đây là đơn vị ngày

Mã số

Nghĩa

Khoảng thời gian [tương đối]

Khoảng thời gian [tuyệt đối]

Y

năm

+/- 9. 2e18 tuổi

[9. 2e18 TCN, 9. 2e18 sau Công Nguyên]

M

tháng

+/- 7. 6e17 tuổi

[7. 6e17 TCN, 7. 6e17 SCN]

W

tuần

+/- 1. 7 và 17 năm

[1. 7e17 TCN, 1. 7e17 SCN]

D

ngày

+/- 2. 5e16 tuổi

[2. 5e16 TCN, 2. 5e16 SCN]

Và đây là đơn vị thời gian

Mã số

Nghĩa

Khoảng thời gian [tương đối]

Khoảng thời gian [tuyệt đối]

h

giờ

+/- 1. 0 và 15 năm

[1. 0e15 TCN, 1. 0e15 SCN]

m

một phút

+/- 1. 7e13 tuổi

[1. 7e13 TCN, 1. 7e13 SCN]

s

thứ hai

+/- 2. 9 và 11 năm

[2. 9e11 TCN, 2. 9e11 SCN]

bệnh đa xơ cứng

một phần nghìn giây

+/- 2. 98 năm

[2. 9e8 TCN, 2. 9e8 sau Công nguyên]

chúng tôi / μs

phần triệu giây

+/- 2. 9e5 năm

[290301 TCN, 294241 SCN]

ns

nano giây

+/- 292 năm

[1678 SCN, 2262 SCN]

Tái bút

pico giây

+/- 106 ngày

[1969 SCN, 1970 SCN]

fs

femto giây

+/- 2. 6 tiếng

[1969 SCN, 1970 SCN]

như

atto giây

+/- 9. 2 giây

[1969 SCN, 1970 SCN]

Chức năng ngày làm việc

Để cho phép sử dụng ngày giờ trong ngữ cảnh chỉ một số ngày nhất định trong tuần là hợp lệ, NumPy bao gồm một tập hợp các hàm "busday" [ngày làm việc]

Mặc định cho các chức năng ngày bận rộn là các ngày hợp lệ duy nhất là từ Thứ Hai đến Thứ Sáu [ngày làm việc thông thường]. Việc triển khai dựa trên "mặt nạ tuần" chứa 7 cờ Boolean để biểu thị ngày hợp lệ;

Các chức năng "busday" có thể kiểm tra thêm danh sách các ngày "nghỉ lễ", các ngày cụ thể không phải là ngày hợp lệ

Hàm này cho phép bạn áp dụng độ lệch được chỉ định trong ngày làm việc cho thời gian biểu với đơn vị là 'D' [ngày]

Ví dụ

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
6

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
7

Khi ngày nhập vào rơi vào ngày cuối tuần hoặc ngày lễ, trước tiên hãy áp dụng quy tắc để chuyển ngày thành ngày làm việc hợp lệ, sau đó áp dụng giá trị bù. Quy tắc mặc định là 'nâng cao', đơn giản là tăng ngoại lệ. Các quy tắc thường được sử dụng nhất là 'chuyển tiếp' và 'lùi'

Ví dụ

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
8

>>> np.datetime64['2005-02']
numpy.datetime64['2005-02']
9

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
0

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
1

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
2

Trong một số trường hợp, việc sử dụng hợp lý cuộn và phần bù là cần thiết để có được câu trả lời mong muốn

Ví dụ

Ngày làm việc đầu tiên vào hoặc sau một ngày

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
3

Ngày làm việc đầu tiên hoàn toàn sau một ngày

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
4

Hàm này cũng hữu ích để tính toán một số loại ngày như ngày lễ. Ở Canada và U. S. , Ngày của mẹ là vào Chủ nhật thứ hai của tháng 5, có thể được tính bằng mặt nạ tuần tùy chỉnh

Ví dụ

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
5

Khi hiệu suất là quan trọng để thao tác nhiều ngày làm việc với một lựa chọn cụ thể về mặt nạ trong tuần và ngày lễ, sẽ có một đối tượng lưu trữ dữ liệu cần thiết ở dạng được tối ưu hóa

np. is_busday[]

Để kiểm tra một giá trị xem đó có phải là một ngày hợp lệ hay không, hãy sử dụng

Ví dụ

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
6

np. busday_count[]

Để tìm xem có bao nhiêu ngày hợp lệ trong một phạm vi datetime64 đã chỉ định, hãy sử dụng

Ví dụ

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
7

Nếu bạn có một mảng các giá trị datetime64 ngày và bạn muốn đếm xem có bao nhiêu trong số đó là ngày hợp lệ, bạn có thể thực hiện việc này

Ví dụ

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
8

Mặt nạ tuần tùy chỉnh

Dưới đây là một số ví dụ về giá trị mặt nạ tuần tùy chỉnh. Các ví dụ này chỉ định mặc định "busday" từ Thứ Hai đến Thứ Sáu là những ngày hợp lệ

Vài ví dụ

>>> np.datetime64['2005-02', 'D']
numpy.datetime64['2005-02-01']
9

Datetime64 thiếu sót

Giả định rằng tất cả các ngày dài chính xác là 86400 giây khiến nó tương thích phần lớn với Python và ngữ nghĩa "thời gian POSIX"; . Một bản tóm tắt ngắn gọn không đầy đủ được đưa ra dưới đây

  • Không thể phân tích các dấu thời gian UTC hợp lệ xảy ra trong một giây nhuận dương

    Ví dụ

    “2016-12-31 23. 59. 60 UTC” là một giây nhuận, do đó “2016-12-31 23. 59. 60. 450 UTC” là dấu thời gian hợp lệ không thể phân tích cú pháp bằng

    >>> np.datetime64['2005-02-25T03:30']
    numpy.datetime64['2005-02-25T03:30']
    
    0

  • Tính toán Timedelta64 giữa hai ngày UTC có thể sai bởi một số nguyên SI giây

    Ví dụ

    Tính số giây SI giữa “2021-01-01 12. 56. 23. 423 UTC” và “2001-01-01 00. 00. 00. 000 UTC”

    >>> np.datetime64['2005-02-25T03:30']
    numpy.datetime64['2005-02-25T03:30']
    
    1

    tuy nhiên câu trả lời đúng là 631198588. 423 SI giây vì có 5 giây nhuận trong khoảng thời gian từ 2001 đến 2021

  • Tính toán Timedelta64 cho các ngày trong quá khứ không trả về SI giây, như người ta mong đợi

    Ví dụ

    Tính số giây giữa "000-01-01 UT" và "1600-01-01 UT", trong đó UT là giờ quốc tế

    >>> np.datetime64['2005-02-25T03:30']
    numpy.datetime64['2005-02-25T03:30']
    
    2

    Kết quả tính toán, 50491123200 giây, thu được bằng số ngày đã trôi qua [584388] nhân 86400 giây; . Giá trị chính xác tính bằng SI giây chỉ có thể được ước tính, e. g sử dụng dữ liệu được xuất bản trong Phép đo vòng quay của Trái đất. 720 TCN đến AD 2015, 2016, Kỷ yếu của Hiệp hội Hoàng gia A 472, bởi Stephenson et. tất cả. Ước tính hợp lý là 50491112870 ± 90 giây, với chênh lệch là 10330 giây

Chủ Đề