个性化阅读
专注于IT技术分析

如何在Django中的视图和模板中格式化日期时间对象

本文概述

在Django中使用日期? Python的datetime模块提供了用于轻松操纵日期和时间的类。你可以使用strftime方法格式化Python的任何日期(只要它是datetime对象)。

日期格式

datetime对象将具有strftime方法, 该方法允许你为日期提供自定义格式, 并在需要的地方将其打印为字符串。你可以使用以下标识符指定日期的每个部分的呈现方式和位置:

格式字符串 描述
%a 语言环境的缩写工作日名称。
%A 语言环境的完整工作日名称。
%b 语言环境的缩写月份名称。
%B 语言环境的完整月份名称。
%c 语言环境的适当日期和时间表示。
%d 以十进制数[01, 31]表示的月份中的一天。
%H 小时(24小时制), 为十进制数字[00, 23]。
%I 小时(12小时制)为十进制数字[01, 12]。
%j 一年中的天, 以十进制数字[001, 366]为准。
%m 以十进制数字[01, 12]表示的月份。
%M 以十进制数字表示[00, 59]。
%p 区域设置等效于AM或PM。
%S 第二个十进制数字[00, 61]。
%U 一年中的周号(星期日为一周的第一天), 以十进制数[00, 53]。在第一个星期日之前的新的一年中的所有天都被视为在第0周。
%w 工作日为十进制数字[0(Sunday), 6]。
%W 一年中的星期数(星期一为星期的第一天), 以十进制数[00, 53]。第一个星期一之前的新的一年中的所有天均视为在第0周。
%x 语言环境的适当日期表示形式。
%X 语言环境的适当时间表示形式。
%y 没有世纪的年份作为十进制数字[00, 99]。
%Y 以世纪作为十进制数字的年份。
%Z 时区名称(如果不存在时区, 则没有字符)。
%% 文字”%”字符。

在视图中

在控制器内, 你可以直接访问datetime对象。这意味着你可以简单地执行strftime函数, 并将格式字符串作为第一个参数传递:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# Import Datetime
from datetime import datetime

def index(request):
    # return HttpResponse("<h1>Hello, world !</h1>")
    # Some Date Object, for example a default generated by datetime
    myDate = datetime.now()
    
    # Give a format to the date
    # Displays something like: Aug. 27, 2017, 2:57 p.m.
    formatedDate = myDate.strftime("%Y-%m-%d %H:%M:%S")

    # Do something with the formatted date
    return render(request, 'pages/index.html', {
        'date': formatedDate
    })

在模板中

如果你愿意在模板中而不是在视图(控制器)中格式化字符串, 则可以使用过滤器(即日期)进行格式化。以下视图(控制器)将日期对象返回到一个简单的模板, 该模板将打印从视图发送的日期:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# Import Datetime class
from datetime import datetime

def index(request):

    # Some Date Object, for example a default generated by datetime
    myDate = datetime.now()

    # Render Some Template with a parameter accesible as date
    return render(request, 'pages/index.html', {
        'myDate': myDate
    })

以下模板(index.html)的内容将使用以下代码来格式化Providen Date对象:

Prints something like:  Aug. 27, 2017, 2:57 p.m.
{{ myDate|date:'Y-m-d H:i' }}

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在Django中的视图和模板中格式化日期时间对象

评论 抢沙发

评论前必须登录!