1

私の Web ページには、[先週表示]、[先月表示]、[90 日間表示] のオプションがあります。

i) ユーザーが View Last Week をクリックすると、開始日と終了日を取得する必要があります。すなわち

end date : [先週表示] をクリックした現地時間の現在の日付。

開始日 : 「先週表示」の場合、開始日は 7 日間のうちの 1 日目の日付です。

ii) 開始日が 30 日の最初の日付であることを除いて、上記の「先月を表示」と同様です。

iii) 「90 日間を表示」の場合、開始日は 90 日間の最初の日付である必要があります。

現在のタイム ゾーンと GMT への変換: [先週表示]、[先月表示]、[90 日間表示] をクリックしたときの現在のローカル タイム ゾーンが GMT タイム ゾーンに変換されます。

Javascript では、これらの日付と現地時間に基づいて GMT タイムゾーンを計算し、サービスに送信する必要があります。

私はこれについて無知です。助けを求める。ありがとう。

4

2 に答える 2

1

Moment.jsを使用すると、タスクは非常に簡単になります。

たとえば、先週の開始日と終了日を取得するには、次のようにします。

function getLastWeekBounds() {
  var lastWeek = moment().subtract('week', 1);
  return {
    start: lastWeek.startOf('week').toDate(),
    // => Sun Oct 06 2013 00:00:00 GMT-0600 (MDT)
    end:   lastWeek.endOf('week').toDate()
    // => Sat Oct 12 2013 23:59:59 GMT-0600 (MDT)
  };
}

そのライブラリを使用して、一貫した方法でタイムゾーンを操作することもできます。

于 2013-10-18T14:43:26.853 に答える
0

エポックなどからのミリ秒や秒ではなく、文字列が必要であると仮定すると(指定していません)、参照してくださいDate

Javascript

var today = new Date();

/*
i) When the user clicks on View Last Week , I need to get the start date and end date. i.e.

end date : current date at his local time when he clicked on 'View last week'.

start date : if it is 'View last week', the start date is the date of the 1 st day of the 7 days.
*/

console.log({
    start: new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000).toString(),
    end: today.toString()
});

/*
ii) Similarly as above for 'View last month' except that the start date is the date of the the first day of the 30 days.
*/

console.log({
    start: new Date(today.getTime() - 30 * 24 * 60 * 60 * 1000).toString(),
    end: today.toString()
});

/*
iii) For 'View 90 days', the start date should be the date of the first day of the 90 days.
*/

console.log({
    start: new Date(today.getTime() - 90 * 24 * 60 * 60 * 1000).toString(),
    end: today.toString()
});

/*
Current time zone and convert to GMT: his current local time zone when he clicked on 'View last week','View last month','View 90 days' which is converted to GMT timezone.

In Javascript,I need to calculate these dates and the GMT timezone based on his local time and send it to my service .
*/

function plz(number, length) {
    var output = number.toString();

    while (output.length < length) {
        output = "0" + output;
    }

    return output;
}

var dayName = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    monthName = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

console.log({
    today_local: today.toString(),
    today_utc: dayName[today.getUTCDay()] + " " + monthName[today.getUTCMonth()] + " " + today.getUTCDate() + " " + today.getUTCFullYear() + " " + plz(today.getUTCHours(), 2) + ":" + plz(today.getUTCMinutes(), 2) + ":" + plz(today.getUTCSeconds(), 2) + " GMT"
});

/*
or if a custom format not required, can use RFC-1123 formatted date stamp
*/

console.log({
    today_local: today.toString(),
    today_utc: today.toUTCString()
});

出力

Object {start: "Fri Oct 11 2013 15:21:34 GMT+0200 (CEST)", end: "Fri Oct 18 2013 15:21:34 GMT+0200 (CEST)"}
Object {start: "Wed Sep 18 2013 15:21:34 GMT+0200 (CEST)", end: "Fri Oct 18 2013 15:21:34 GMT+0200 (CEST)"}
Object {start: "Sat Jul 20 2013 15:21:34 GMT+0200 (CEST)", end: "Fri Oct 18 2013 15:21:34 GMT+0200 (CEST)"}
Object {today_local: "Fri Oct 18 2013 15:21:34 GMT+0200 (CEST)", today_utc: "Fri Oct 18 2013 13:21:34 GMT"} 
Object {today_local: "Fri Oct 18 2013 15:29:59 GMT+0200 (CEST)", today_utc: "Fri, 18 Oct 2013 13:29:59 GMT"} 

jsフィドル

于 2013-10-18T13:27:10.727 に答える