2015-03-17 2 views
-1

В функции «send_mail» я хотел бы изменить переменную «start», чтобы отобразить дату/время как MM/DD/YYYY - HH: MM AM/PM в письме. Кто-нибудь знает, как это сделать?Формат отображения времени как (MM/DD/YYYY - HH: MM AM/PM) - Django/Python

Спасибо заранее!

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), '[email protected]', ['[email protected]']) 
     except: 
      pass 
    event.save() 
    next = next or reverse('event', args=[event.id]) 
    next = get_next_url(request, next) 
    return HttpResponseRedirect(next) 

ответ

2

start является datetime.datetime объект, поэтому мы можем вызвать его метод 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) 
} 

Примечание: Вы должны убедиться, что сделать это изменение больше ничего «по дороге» не ломаются - в initial_data['start']был a datetime.datetime объект, и теперь строка.