Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中开始和结束一天?_Javascript - Fatal编程技术网

如何在Javascript中开始和结束一天?

如何在Javascript中开始和结束一天?,javascript,Javascript,如何在时间戳(GMT)中开始(00:00:00)和结束(23:59:59)?计算机使用本地时间 var start = new Date(); start.setHours(0,0,0,0); var end = new Date(); end.setHours(23,59,59,999); alert( start.toUTCString() + ':' + end.toUTCString() ); 如果需要从中获取UTC时间,可以使用UTC()使用库,这可以通过当前日期对象上的和方法实

如何在时间戳(GMT)中开始(00:00:00)和结束(23:59:59)?计算机使用本地时间

var start = new Date();
start.setHours(0,0,0,0);

var end = new Date();
end.setHours(23,59,59,999);

alert( start.toUTCString() + ':' + end.toUTCString() );
如果需要从中获取UTC时间,可以使用
UTC()

使用库,这可以通过当前日期对象上的和方法实现,并将字符串
'day'
作为参数传递:

当地格林尼治标准时间:

var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today

使用该库,可以通过使用startOf和endOf方法通过将“day”作为参数来实现相同的功能

var DateTime = luxon.DateTime;
DateTime.local().startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z
DateTime.local().endOf('day').toUTC().toISO(); //2017-11-17T18:29:59.999Z
DateTime.fromISO(new Date().toISOString()).startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z
如果只需要本地时间,请删除.toUTC()

你们可能会问为什么不,答案就是这样。

我更喜欢使用库来处理日期。这是一个非常好的模块化和一致性工具。您可以通过以下方式开始和结束一天:

var startOfDay=dateFns.startOfDay;
var endOfDay=dateFns.endOfDay;
console.log('start of day==>',startOfDay(新日期('2015-11-11'));
console.log('end of day==>',endOfDay(新日期('2015-11-11'))

如果您对GMT中的时间戳感兴趣,您也可以这样做,它可以方便地适应不同的时间间隔(小时:
1000*60*60
,12小时:
1000*60*12
,等等)

FYI(Tvanfosson的合并版本)

调用函数时,它将返回实际日期=>date

//如何使用

today.local.now(); //"2018-09-07T01:48:48.000Z" BAKU +04:00
today.iso.now(); // "2018-09-06T21:49:00.304Z" * 
*它适用于Java8上的即时时间类型,根据您所在的地区自动转换您的本地时间。(如果您计划编写全局应用程序)

在中,我们可以这样声明:

   const start = moment().format('YYYY-MM-DD 00:00:01');
   const end = moment().format('YYYY-MM-DD 23:59:59');

这可能有点棘手,但您可以使用
Intl.DateTimeFormat

下面的代码段可以帮助您将任何时区的日期转换为开始/结束时间

const beginingOfDay=(options={})=>{
const{date=newdate(),timeZone}=options;
const parts=Intl.DateTimeFormat(“en-US”{
时区,
小时循环:“h23”,
小时:“数字”,
分钟:“数字”,
第二:“数字”,
}).格式部分(日期);
const hour=parseInt(parts.find((i)=>i.type==“hour”).value);
const minute=parseInt(parts.find((i)=>i.type==“minute”).value);
const second=parseInt(parts.find((i)=>i.type==“second”).value);
返回新日期(
1000 *
数学地板(
(日期-小时*3600000-分钟*60000-秒*1000)/1000
)
);
};
常量endOfDay=(…参数)=>
新日期(beginingOfDay(…args).getTime()+86399999);
const beginingOfYear=()=>{};
log(beginingOfDay({时区:“GMT”}));
log(endOfDay({timeZone:GMT}));
console.log(beginingOfDay({时区:“亚洲/东京”}));

console.log(endOfDay({时区:“亚洲/东京”}))这是我们如何使用LocalDate以Java 8风格完成的:

LocalDate localDateStart = LocalDate.now().plusDays(5);
Date startDate = Date.from(localDateStart.atStartOfDay(ZoneId.systemDefault()).toInstant());

LocalDate localDateEnd = localDateStart.plusDays(1);
Date endDate = Date.from(localDateEnd.atStartOfDay(ZoneId.systemDefault()).toInstant());
//获取UTC时区的当前时间
const d=新日期();
const year=d.getUTCFullYear();
const month=d.getUTCMonth();
const day=d.getUTCDate();
//设置开始一天UTC的时间
const startTime=Date.UTC(年、月、日、0、0、0);
//设置结束日期UTC的时间
const endTime=Date.UTC(年、月、日、23、59、0、0);

我们可以使用
力矩

// for day start time
moment(moment().startOf('day')).format('HH:mm')

// for day end time
moment(moment().endOf('day')).format('HH:mm')

momentjs是一站式的JavaScript时间处理工具。始终值得导入。最后我们应该使用
.toDate()
来获取日期<代码>变量end=moment().endOf('day').toDate()在末尾添加
.unix()
以秒为单位获取unix时间戳:)如下:
时刻().startOf('day')。unix()
如果我有预定义的日期对象,例如
时刻(新日期()).endOf(“day”)不起作用,但
时刻()确实有效。@Klashourbourn若要获取指定时区的一天开始时间,您可以使用
时刻时区
并执行此操作:
时刻().tz('America/Chicago').startOf('day').toDate()
。我建议
var end=new Date(start.getTime())
确保您有相同的时间点-如果您在开始和结束初始化之间更改日期-这可能会发生-这只是一个好习惯into@MartynDavis当一切正常运行时,通常0-2个刻度之间会发生,但这取决于cpu的繁忙程度,因此,如果您担心1个刻度的精度,那么这样做是有意义的。我还建议使用
setUTCHours
而不是
setHours
来获取世界时。对于我来说,事情可能已经发生了变化,但这会将启动设置为UTC启动请阅读@sidonaldson的极其重要的评论。使用
setHours
是危险的,因为它设置的是本地小时,而不是UTC小时。不支持UTC处理。非常有用!重要提示:仅当您需要UTC时间时,此选项才有效。(这就是问题的目的……但我觉得我应该警告那些通过谷歌搜索来到这里但没有意识到这一点的人。)
   const start = moment().format('YYYY-MM-DD 00:00:01');
   const end = moment().format('YYYY-MM-DD 23:59:59');
LocalDate localDateStart = LocalDate.now().plusDays(5);
Date startDate = Date.from(localDateStart.atStartOfDay(ZoneId.systemDefault()).toInstant());

LocalDate localDateEnd = localDateStart.plusDays(1);
Date endDate = Date.from(localDateEnd.atStartOfDay(ZoneId.systemDefault()).toInstant());
// for day start time
moment(moment().startOf('day')).format('HH:mm')

// for day end time
moment(moment().endOf('day')).format('HH:mm')