显示时间格式为 (MM/DD/YYYY - HH:MM AM/PM) - Django/Python

Display time format as (MM/DD/YYYY - HH:MM AM/PM) - Django/Python

在 "send_mail" 函数下,我想更改 "start" 变量以将 date/time 显示为 MM/DD/YYYY - HH:MM AM/PM 在电子邮件中。有人知道怎么做吗?

提前致谢!

date = coerce_date_dict(request.GET)
initial_data = None
if date:
    try:
        start = datetime.datetime(**date)
        initial_data = {
            "start": start,
            "end": start + datetime.timedelta(minutes=60)
        }
    except TypeError:
        raise Http404
    except ValueError:
        raise Http404

instance = None
if event_id is not None:
    instance = get_object_or_404(Event, id=event_id)

calendar = get_object_or_404(Calendar, slug=calendar_slug)

form = form_class(data=request.POST or None, instance=instance, initial=initial_data)

if form.is_valid():
    event = form.save(commit=False)
    if instance is None:
        event.creator = request.user
        event.calendar = calendar
        try:
            send_mail('New Lesson', '%s has scheduled a new lesson for %s' %(request.user.full_name, start), 'example@gmail.com', ['example@gmail.com'])
        except:
            pass
    event.save()
    next = next or reverse('event', args=[event.id])
    next = get_next_url(request, next)
    return HttpResponseRedirect(next)

start是一个datetime.datetime object, so we can call its strftime生成格式化字符串的方法。

您需要的格式说明符是%m/%d/%Y %I:%M %p

例如,在当前时间(对我来说,在美国东海岸)调用的strftime方法生成:03/17/2015 05:51 PM

我们可以轻松地将其集成到您的代码中:

start = datetime.datetime(**date)
initial_data = {
    "start": start.strftime("%m/%d/%Y %I:%M %p"),
    "end": start + datetime.timedelta(minutes=60)
}

注意:您必须确保进行此更改不会破坏任何其他内容 "down the road" -- 因为 initial_data['start'] a datetime.datetime 对象,现在是一个字符串。