1

format のdatefieldを formatmm/dd/yyyyに変換する方法と format の timefield を変換する方法dd/mm/yyyy24hrs to 12hr AM/PM.

これは私が以下の状況で使用しています

モデルからデータベースで値を取得しているため、データベースから取得した値が「0」の場合、日付と時刻の形式は(dd/mm/yyyy and 12hr AM/PM).

データベース フィールドの値が「1」の場合、フォーマットは(mm/dd/yyyy and 24hr)

models.py

class Report(models.Model):
    user = models.ForeignKey(User, null=False)
    manual_date = models.DateField('Another date', null=True, blank=True)
    manual_time = models.TimeField('Another time', null=True, blank=True)

class Settings(models.Model):
    date_format = models.CharField('Date format', max_length=100)
time_format = models.CharField('Time format', max_length=100)

実行する方法。

ありがとう

4

1 に答える 1

2

タグを使用して、テンプレート レベルでこの変換を処理する方がよいと思いますdate。たとえば、変数datetime変数をテンプレートに渡していることがわかります。それらを変換せずに渡し、後でテンプレートに表示される場所でこれを行います。

{% if condition %}
    {{date|date:"DATE_FORMAT"}}
    {{value|time:"TIME_FORMAT"}}
{% endif %}

where"TIME_FORMAT"は日付を表示する実際の形式で、 condition は満たす必要がある条件です。

ビューメソッド内でこれを行う必要がある場合は、次のdjango.utils.dateformatようにモジュールを使用できます。

from django.utils.dateformat import DateFormat, TimeFormat
formatted_date = DateFormat(date_variable)
formatted_date.format('Y-m-d') # substitute this format for whatever you need
formatted_time = TimeFormat(time_variable)
formatted_date.format('h') # substitute this format for whatever you need

date_variableフォーマットしたい場所でそのクラスを使用time_variableし、適切なフォーマット文字列を使用します。

また、ビューのコードについて。次のように、ビュー メソッドの途中で文字列を返すことはできません。

if request.method == 'POST':
    if user.date_format == '0':
        date=datetime.datetime.strptime('%m/%d/%Y').strftime('%d/%m/%Y')
        return date

リクエストメソッドが の場合、例外がスローされますPOST。その上、あなたはそこで何の日付をフォーマットしていますか?をフォーマットする必要がありますreport.manual_date。コードのどこにもそれがありません。設定に応じてフォーマットしたい変数に上記のことを適用し、tempalte_context戻ったときにその変数をに渡します。それが役立つことを願っています!

于 2013-05-09T13:03:56.553 に答える