كيفية تحويل ثانية لHH: MM: SS مع تاريخ العلامة القالب جانغو؟

StackOverflow https://stackoverflow.com/questions/1816176

  •  08-07-2019
  •  | 
  •  

سؤال

وتحرير: هل هناك طريقة لتحويل بسهولة {{ value|date:"Z" }} إلى واحدة من + ح ح: مم أو -hh: مم الأشكال (لأن التاريخ: "Z" عوائد XXXX أو ثواني -xxxx).

هذا لمزيد من التوضيحات حول تنسيق الحاجة.

وشكرا لكم وآسف لبلدي قبيحة الإنجليزية. ؛)

هل كانت مفيدة؟

المحلول

ومجرد توضيح هنا، هو التوقيت الذي يحتاج تعويض القولون، أي 2009-11-29T14:33:59-0600 في المثال أعلاه يجب 2009-11-29T14:33:59-06:00 لتتوافق مع المبادئ التوجيهية W3C.

وإذا نظرنا إلى التعليمات البرمجية في django/utils/dateformat.py:

  def O(self):
    "Difference to Greenwich time in hours; e.g. '+0200'"
    seconds = self.Z()
    return u"%+03d%02d" % (seconds // 3600, (seconds // 60) % 60)

هل يمكن تعديل النسخة المحلية من جانغو لإضافة ':' حتى. return u"%+03d:%02d" % (seconds // 3600, (seconds // 60) % 60) أو إنشاء القالب الخاص بك العلامة للقيام بفعالية الشيء نفسه. ولكن ربما كان الأسهل هو أن يؤلف سلسلة من وجهة نظرك، وتمرير ذلك على طول كمتغير إلى القالب.

وأنها لا تبدو وكأنها نسخة HTML5 من التوقيت هو متاح من خارج منطقة الجزاء.

[التحديث]

في التفكير ربما يمكن القيام بذلك؛

>>> from django.utils import dateformat
>>> fmt = "Y-m-d\TH:i:sO"
>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2009, 12, 1, 12, 39, 48, 655867)
>>> str = dateformat.format(now, fmt)
>>> print str
2009-12-01T12:39:48+0000
>>>

ثم قم بإضافة ':'

>>> s = str[:-2] + ':' + str[-2:]
>>> s
u'2009-12-01T12:39:48+00:00'
>>> 

نصائح أخرى

وبدلا من Z تحتاج O (هذا على "يا"، وليس "صفر").

>>> from django.template import *
>>> Template('{% now "Y-m-d\TH:i:sO" %}').render(Context())
u'2009-11-29T14:33:59-0600'
scroll top