Hướng dẫn what is tzinfo in python? - tzinfo trong python là gì?

Lớp DateTime cung cấp các chức năng khác nhau để thao tác các khoảng thời gian ngày và thời gian. Đối tượng DateTime mà bạn sử dụng trong datetime.now() thực sự là đối tượng của lớp DateTime. Những đối tượng này giúp chúng tôi sử dụng các chức năng vào ngày và thời gian.

Lưu ý: Để biết thêm thông tin, hãy tham khảo mô -đun DateTime Python với các ví dụ For more information, refer to Python datetime module with examples

DateTime.tzinfo()

datetime.now() không có bất kỳ thông tin nào về múi giờ. Nó chỉ sử dụng thời gian hệ thống hiện tại. Trong một số tình huống, chi tiết múi giờ có thể cần thiết. Trong những trường hợp như vậy, lớp trừu tượng TZINFO được sử dụng. Tzinfo là một lớp cơ sở trừu tượng. Nó không thể được khởi tạo trực tiếp. Một lớp con cụ thể phải lấy nó và thực hiện các phương pháp được cung cấp bởi lớp trừu tượng này.tzinfo abstract class is used. tzinfo is an abstract base class. It cannot be instantiated directly. A concrete subclass has to derive it and implement the methods provided by this abstract class.

Thể hiện của lớp TZINFO có thể được chuyển cho các hàm tạo của các đối tượng DateTime và thời gian. Nó tìm thấy các ứng dụng của nó trong các tình huống như chuyển đổi thời gian địa phương sang UTC hoặc để tính đến thời gian tiết kiệm ánh sáng ban ngày.

Các đối tượng DateTime ngây thơ và nhận thức

Một đối tượng DateTime không chứa bất kỳ thông tin nào trên múi giờ được cho là một đối tượng DateTime ngây thơ. Đối với một đối tượng DateTime ngây thơ, datetime_object.tzinfo sẽ là None. Một đối tượng DateTime nhận thức chứa thông tin múi giờ được nhúng trong đó.naive datetime object. For a naive datetime object, datetime_object.tzinfo will be None. An Aware datetime object contains the time zone information embedded in it.

Các phương pháp có sẵn để thực hiện trong lớp cơ sở TZINFO là:

  • UTCOFFSET (tự, DT)
  • DST (tự, DT)
  • Tzname (tự, DT)
  • Fromutc (tự, DT)

utcoffset()

Nó trả về phần bù của thể hiện DateTime được truyền dưới dạng đối số.

Điều này bù cái gì đề cập đến?

Nó đề cập đến phần bù múi giờ biểu thị bao nhiêu giờ múi giờ ở phía trước từ thời gian phối hợp hoặc tọa độ thời gian phổ quát (UTC). Phần bù được viết là +00: 00. Ví dụ: đối với Châu Á/Đài Bắc, nó được viết là UTC +08: 00.

Nó chiếm thời gian của một đối tượng DateTime và trả về sự khác biệt giữa thời gian trong đối tượng DateTime và thời gian của cùng một điểm trong UTC. Nó trả lại phần bù trong vài phút về phía đông của UTC. Nếu giờ địa phương là phía tây UTC, nó sẽ là tiêu cực. Mẫu thực hiện chung được đưa ra dưới đây:minutes east of UTC. If the local time is west of UTC, it would be negative. The general implementation form is given below:

For fixed offset :

 def utcoff(self, dt):
      return constant

For time aware objects :

def utcoffset(self, dt):
        return self.stdoffset + self.dst(dt)

dst()

Nó được viết tắt là thời gian tiết kiệm ban ngày. Nó biểu thị việc tiến lên đồng hồ 1 giờ vào mùa hè, do đó bóng tối rơi sau đó theo đồng hồ. Nó được đặt thành bật hoặc tắt. Nó được kiểm tra dựa trên một tuple chứa 9 phần tử như sau:Day-light Saving Time. It denotes advancing the clock 1 hour in summer time, so that darkness falls later according to the clock. It is set to on or off. It is checked based on a tuple containing 9 elements as follows :

.

Một hàm riêng được viết để trả về 0, 1 hoặc -1 tùy thuộc vào 9 yếu tố này. Dựa trên đó giá trị của dst(self, dt) được quyết định. Hàm được viết trong lớp nơi dst() được xác định. Nó được viết là:

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

0
For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

1
For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

2

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

4
For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

5
For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

6
For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

7

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

8
For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

9

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

8
datetime.now() : UTC
Naive Object : None
Aware Object : CET
1
datetime.now() : UTC
Naive Object : None
Aware Object : CET
2
datetime.now() : UTC
Naive Object : None
Aware Object : CET
3
datetime.now() : UTC
Naive Object : None
Aware Object : CET
2
datetime.now() : UTC
Naive Object : None
Aware Object : CET
5

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

4
datetime.now() : UTC
Naive Object : None
Aware Object : CET
7
For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

6
datetime.now() : UTC
Naive Object : None
Aware Object : CET
9

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

4
For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

5
For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

6
def fromutc(self, dt):
    dt_offset = dt.utcoffset()
    dt_dst = dt.dst()
    delta = dt_offset - dt_dst  
               
    if delta:
          dt += delta   
          dtdst = dt.dst()
          
    if dtdst:
          return dt + dtdst
    else:
          return dt
3

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

4
def fromutc(self, dt):
    dt_offset = dt.utcoffset()
    dt_dst = dt.dst()
    delta = dt_offset - dt_dst  
               
    if delta:
          dt += delta   
          dtdst = dt.dst()
          
    if dtdst:
          return dt + dtdst
    else:
          return dt
5
def fromutc(self, dt):
    dt_offset = dt.utcoffset()
    dt_dst = dt.dst()
    delta = dt_offset - dt_dst  
               
    if delta:
          dt += delta   
          dtdst = dt.dst()
          
    if dtdst:
          return dt + dtdst
    else:
          return dt
6
datetime.now() : UTC
Naive Object : None
Aware Object : CET
2

Ở đây

def fromutc(self, dt):
    dt_offset = dt.utcoffset()
    dt_dst = dt.dst()
    delta = dt_offset - dt_dst  
               
    if delta:
          dt += delta   
          dtdst = dt.dst()
          
    if dtdst:
          return dt + dtdst
    else:
          return dt
8 lấy tuple này và chuyển đổi nó thành thời gian trong vài giây trôi qua kể từ thời đại địa phương. Sau đó,
def fromutc(self, dt):
    dt_offset = dt.utcoffset()
    dt_dst = dt.dst()
    delta = dt_offset - dt_dst  
               
    if delta:
          dt += delta   
          dtdst = dt.dst()
          
    if dtdst:
          return dt + dtdst
    else:
          return dt
9 được sử dụng cùng với Mktime. Nó trả về các giá trị như sau:

‘1,-tiết kiệm ánh sáng ban ngày trên‘ – Daylight Saving ON
‘0’ – Daylight Saving OFF
‘-1’ – Daylight Saving information unknown

Sau khi thêm mã này vào lớp, dst() có thể được xác định như được đưa ra dưới đây dựa trên các điều kiện.

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

tzname()

Điều này được sử dụng để tìm tên múi giờ của đối tượng DateTime được truyền. Nó trả về một đối tượng chuỗi python.

Example:

datetime.now()1 datetime.now()2

datetime.now()3 datetime.now()4datetime.now()1 datetime.now()6

datetime.now()7

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

6 datetime.now()9

datetime.now()0datetime.now()1datetime.now()2datetime.now()3

datetime.now()4

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

6 datetime.now()6datetime.now()7datetime.now()8

datetime.now()9

For fixed offset class :

 def dst(self, dt):
        return ZERO

For time aware objects :

 def utcoffset(self, dt):
        if self._isdst(dt):
            return DSTOFFSET
        else:
            return STDOFFSET

6 datetime_object.tzinfo1datetime_object.tzinfo2
datetime.now() : UTC
Naive Object : None
Aware Object : CET
3datetime_object.tzinfo44
datetime.now() : UTC
Naive Object : None
Aware Object : CET
3datetime_object.tzinfo6
datetime.now() : UTC
Naive Object : None
Aware Object : CET
3datetime_object.tzinfo8
datetime.now() : UTC
Naive Object : None
Aware Object : CET
3
datetime.now() : UTC
Naive Object : None
Aware Object : CET
2222

Is

datetime.now()0datetime.now()1dst(self, dt)9dst()0

datetime.now()0datetime.now()1dst()3dst()4

Output:

datetime.now() : UTC
Naive Object : None
Aware Object : CET

fromutc()

Hàm này chiếm ngày và thời gian của đối tượng trong UTC và trả về thời gian cục bộ tương đương. Nó được sử dụng chủ yếu để điều chỉnh ngày và thời gian. Nó được gọi từ việc triển khai dst()5 mặc định. DT.TZINFO sẽ được thông qua dưới dạng dữ liệu ngày và thời gian của DT, sẽ được trả lại dưới dạng thời gian địa phương tương đương.

Lưu ý: Nó sẽ tăng dst()6 nếu dt.tzinfo không phải là bản thân hoặc/và dst () không có. It will raise dst()6 if dt.tzinfo is not self or/and dst() is None.

Việc thực hiện chung được đưa ra dưới đây:

def fromutc(self, dt):
    dt_offset = dt.utcoffset()
    dt_dst = dt.dst()
    delta = dt_offset - dt_dst  
               
    if delta:
          dt += delta   
          dtdst = dt.dst()
          
    if dtdst:
          return dt + dtdst
    else:
          return dt

Làm cách nào để loại bỏ tzinfo?

Để loại bỏ dấu thời gian, tzinfo phải được đặt không khi gọi chức năng thay thế (). Đầu tiên, tạo một đối tượng DateTime với thời gian hiện tại bằng DateTime. bây giờ(). Đối tượng DateTime sau đó được sửa đổi để chứa thông tin múi giờ cũng bằng cách sử dụng múi giờ.set None when calling replace() function. First, create a DateTime object with current time using datetime. now(). The DateTime object was then modified to contain the timezone information as well using the timezone.

Thời gian trong Python là gì?

Múi giờ.Python cung cấp lớp cơ sở Tóm tắt DateTime.tzinfo cung cấp các phương thức để xử lý timezone.Nhưng lớp này là một lớp cơ sở trừu tượng và không nên được khởi tạo trực tiếp.Chúng ta cần xác định một lớp con của TZINFO để nắm bắt thông tin về một múi giờ cụ thể.Python provides the datetime. tzinfo abstract base class which provides methods to handle timezone. But this class is an abstract base class and should not be instantiated directly. We need to define a subclass of tzinfo to capture information about a particular time zone.

Làm thế nào để bạn cho timezone trong Python?

Đối tượng nhận thức timezone bằng cách sử dụng DateTime bây giờ ().Thời gian () Hàm của mô -đun DateTime.Sau đó, chúng tôi sẽ thay thế giá trị của múi giờ trong lớp TZINFO của đối tượng bằng hàm thay thế ().Sau đó chuyển đổi giá trị ngày thành định dạng ISO 8601 bằng phương thức isoforMat ().

DateTime utcnow trong Python là gì?

ngày giờ.utcnow () sử dụng getTimeOfday (2) hoặc thời gian.time () trên python 2 (và gmtime (3) để chuyển đổi kết quả thành thời gian bị hỏng).thời gian.Thời gian () sử dụng GetTimeOfday (2), FTIME (3), Thời gian (2).uses gettimeofday(2) or time. time() on Python 2 (and gmtime(3) to convert the result into broken-down time). time. time() uses gettimeofday(2) , ftime(3) , time(2) .