3

今週の開始と終了を表す 2 つの日付範囲を送信しています。ただし、日付の変換は、サーバー側で期待しているものではありません。開始日は問題ありませんが、終了日が 1 日である理由がよくわかりません。

Console.log 出力

Date {Mon May 13 2013 00:00:00 GMT+0100 (GMT Daylight Time)} 
Date {Sun May 19 2013 23:59:59 GMT+0100 (GMT Daylight Time)}

上記の出力を作成する JS

var startOfWeek = moment().day(1).hour(0).minute(0).second(0).toDate()
var endOfWeek = moment().day(7).hour(23).minute(59).second(59).toDate()
console.log(startOfWeek, endOfWeek)

JSON

{"Start":"2013-05-12T23:00:00.000Z","End":"2013-05-18T23:00:00.000Z"}

C#

Start: {13/05/2013 00:00:00}
End: {18/05/2013 23:59:59}

コントローラ

public HttpResponseMessage GetAllCampaignsByDate(DateRange _dateRange)
{
}

モデル

public class DateRange
{
    private DateTime m_start;
    private DateTime m_end;

    public DateTime Start
    {
        get{ return m_start; }
        set { m_start = value.ToLocalTime(); }
    }

    public DateTime End
    {
        get { return m_end; }
        set { m_end = value.ToLocalTime().AddSeconds(-1); }
    }
}
4

2 に答える 2

0

moment.js使用してISO8601(文字列の末尾の Z は UTC を示します)、次に を通過する必要がある場合がありToLocalTime()ます。

于 2013-05-14T15:24:58.643 に答える
0

これはタイムゾーンの問題のようです。どのロケールを使用しているかはわかりませんが、DST を考慮していないようです。クライアントのタイムゾーンにローカルな日付ではなく、クライアントから UTC 日付を送信していることを確認してください。

moment.jsのドキュメントを見る

デフォルトでは、モーメントは現地時間で解析および表示されます

これは事実上、JS のDateオブジェクトの単なるラッパーであり、デフォルトでは次のようになります。

現地時間に従って今日の日付と時刻の JavaScript Date オブジェクトを作成します

したがって、作成した日付をutc 解析を使用してUTCmoment.jsに変換するように指示する必要があります。

moment.utc(moment().day(1).hour(0).minute(0).second(0).toDate());
于 2013-05-14T15:25:59.163 に答える