đâu các mili giây đi đâu?
Đây là phần dễ dàng. Cuộc gọi .timetuple()
sẽ giảm bớt chúng. Bạn có thể thêm lại chúng bằng cách sử dụng thuộc tính .microsecond
. Các datetime.timestamp()
method from the standard library hoạt động theo cách mà các đối tượng datetime ngây thơ:
def timestamp(self):
"Return POSIX timestamp as float"
if self._tzinfo is None:
return _time.mktime((self.year, self.month, self.day,
self.hour, self.minute, self.second,
-1, -1, -1)) + self.microsecond/1e6
else:
return (self - _EPOCH).total_seconds()
Nó là đủ nếu có thể ~ 1 lỗi giờ có thể được bỏ qua trong trường hợp của bạn. Tôi giả sử rằng bạn muốn micro giây và do đó bạn không thể bỏ qua ~ 1 giờ lỗi thời gian âm thầm.
Để chuyển đổi giờ địa phương được cung cấp dưới dạng chuỗi thành dấu thời gian POSIX chính xác là một nhiệm vụ phức tạp nói chung. Bạn có thể chuyển đổi giờ địa phương thành UTC và sau đó là get the timestamp from UTC time.
Có hai vấn đề chính:
Cả hai có thể được giải quyết bằng cách sử dụng cơ sở dữ liệu tz (pytz
mô-đun bằng Python) :
from datetime import datetime
import pytz # $ pip install pytz
from tzlocal import get_localzone # $ pip install tzlocal
tz = get_localzone() # get pytz timezone corresponding to the local timezone
naive_d = datetime.strptime(myDate, "%Y-%m-%d %H:%M:%S,%f")
# a) raise exception for non-existent or ambiguous times
d = tz.localize(naive_d, is_dst=None)
## b) assume standard time, adjust non-existent times
#d = tz.normalize(tz.localize(naive_d, is_dst=False))
## c) assume DST is in effect, adjust non-existent times
#d = tz.normalize(tz.localize(naive_d, is_dst=True))
timestamp = d - datetime(1970, 1, 1, tzinfo=pytz.utc)
kết quả là timestamp
- một đối tượng timedelta
, bạn có thể chuyển nó sang giây, mili giây, vv
sys cũng khác nhau tem có thể hoạt động khác nhau xung quanh/trong giây nhảy vọt. Hầu hết các ứng dụng có thể bỏ qua chúng tồn tại.
Nói chung, có thể đơn giản hơn để lưu dấu thời gian POSIX ngoài vào giờ địa phương thay vì cố gắng đoán từ giờ địa phương.
ngày nhập (2014-08-01) không tương ứng với dấu thời gian (2014-09-15 02: 30: 01.117Z) – jfs