1

Djangoでスポーツアプリを作成しています。それらの試合の正確な時間に行くカウントダウンで試合のリストを表示する必要があります。

カウントダウンが時間と分ではなく試合の日に行くことを除いて、すべてがうまくいきます。たとえば、試合が2日間の午後9時に開始された場合、カウントダウンは試合日の深夜に停止します。したがって、午後9時にはなりません。

これが私のコードです:

<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<script type="text/javascript"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="http://keith-wood.name/js/jquery.countdown.js">    </script>
</head>

<body>

<div style="float:left">
{% for match in matches %}
<div>  
    <p>{{ match }}</p>
    <p> {{match.real_start}} <p>
    <a href="{{ match.get_absolute_url_grille }}">Go</a>
    <div class="match_countdown" data-date="{{ match.real_start|date:'M j, Y'}}"></div>
</div>
{% endfor %}
</div>
</br></br>


<script>

$('.match_countdown').each(function() {
var self = $(this),
    date_string = self.attr('data-date'),
    date = new Date(date_string);
self.countdown({until: date});
});
</script>

</body>

「real_start」は私のDateTimeです。問題は、DateTimeFieldと一致しない日付形式「Mj、Y」に関するものだと思います。しかし、私はそれを修正する方法を見つけられませんでした。

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

4

私の意見では、最善の解決策は、Python コードの you DateTimeField モデル属性をタイムスタンプに変換し、ミリ秒に変換することです。そのロジックを処理するメソッドをモデルに追加することでこれを行います。これが最も簡単な解決策であり、JavaScript でその文字列を解析してミリ秒を取得するか、Django フィルターを記述しますが、それは少し複雑です。

import time
import datetime

def datetime_to_milliseconds(some_datetime_object):
    timetuple = some_datetime_object.timetuple()
    timestamp = time.mktime(timetuple)
    return timestamp * 1000.0

## Example using this
now = datetime.datetime.now()
millisecond_timestamp_now = datetime_to_milliseconds(now)

(ロジックを理解しやすくするために、コードは選択的に冗長になっています)。

あなたのJavascriptは、次の行に沿ったものでなければなりません。

$('.match_countdown').each(function() {
    var self = $(this),
    date_string = self.attr('data-date'),
    date_milliseconds = Number(date_string);
    date = new Date(date_milliseconds);
    self.countdown({until: date});
});

基本的に、これらの線に沿った何かが取引を行う必要があり、それをメソッドに適応させるだけです。

将来のヒントとして、テンプレートに多くのロジックを入れないようにしてください。エラーが発生しやすく、実際には良い習慣ではありません (ロジックのみをレンダリングする場合を除き、それでもより良い解決策があります)。

幸運を。

于 2012-10-16T22:26:41.157 に答える
2

Django 1.2以降でできること

date = new Date({{ value|date:"c" }});

ここでフォーマットのドキュメントを確認してください。

于 2014-10-13T09:14:47.233 に答える