web-dev-qa-db-ja.com

今日の始まりのUNIXタイムスタンプをjavascriptでどのように取得しますか?

現在のタイムスタンプは次の方法で生成できることに気付きました...

var timestamp = Math.round((new Date()).getTime() / 1000);

私が欲しいのは、今日の初めのタイムスタンプです。たとえば、現在のタイムスタンプはおおよそ1314297250ですが、生成できるようにしたいのは1314230400で、これは今日のAugust 25th 2011の始まりです。

ご協力いただきありがとうございます。

25
Anthony Jack
var now = new Date();
var startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var timestamp = startOfDay / 1000;
42
Tim Down

さて、これを行うための最もクリーンで最速の方法は次のとおりです。

long timestamp = 1314297250;
long beginOfDay = timestamp - (timestamp % 86400);

ここで、86400は1日の秒数です。

8
Luis Fontes
var now = new Date; // now

now.setHours(0);   // set hours to 0
now.setMinutes(0); // set minutes to 0
now.setSeconds(0); // set seconds to 0

var startOfDay = Math.floor(now / 1000); // divide by 1000, truncate milliseconds
4
pimvdb
var d = new Date();
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
var t = d / 1000;
3
Alex Turpin

または、ミリ秒単位の日数のモジュロを減算することもできます。

var day = 24*60*60*1000;
var start_of_today = Date.now() - Date.now() % day;
1
digitalWestie

Luis FontesのソリューションはUTC時間を返すため、setHoursソリューションとは1時間(夏時間)異なる可能性があります。

var d = new Date();
var t = d - (d % 86400000);

上記の例の簡略版(現地時間)。

var d = new Date();
d.setHours(0,0,0,0);
var t = d / 1000;

ここでいくつかのパフォーマンステストを見つけることができます: http://jsperf.com/calc-start-of-day

1
Henry Brewer

1日の始まりを取得するための別の方法は、次のとおりです。

var now = new Date();
var beginningOfDay = new Date(now.getTime() -
                     now.getHours() * 60 * 60 * 1000 -
                     now.getMinutes() * 60 * 1000 -
                     now.getSeconds() * 1000 -
                     now.getMilliseconds());
1
Joseph Marikle

どの日付でも、日付のISO文字列( 'yyyy-mm-dd')を使用して、日付の開始/終了のタイムスタンプを簡単に取得できます。

var dateString = '2017-07-13';
var startDateTS = new Date(`${dateString}T00:00:00.000Z`).valueOf();
var endDateTS = new Date(`${dateString}T23:59:59.999Z`).valueOf();

今日のISO文字列を取得するには、(new Date()).toISOString().substring(0, 10)を使用します。したがって、今日のTSを取得するには:

var dateString = (new Date()).toISOString().substring(0, 10);
var startDateTS = new Date(`${dateString}T00:00:00.000Z`).valueOf();
var endDateTS = new Date(`${dateString}T23:59:59.999Z`).valueOf();
0
Alexander
var yoursystemday = new Date(new Date().getTime()-(120000*60+new Date().getTimezoneOffset()*60000));
yoursystemday = new Date();
var current_time_stamp = Math.round(yoursystemday.getTime()/1000);
0
Vu Anh
var now = new Date();
var startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var timestamp = startOfDay.getTime() / 1000;
0
Venkat Kotra