Javascript에서 일과를 시작하는 방법은 무엇입니까?
타임스탬프(GMT)에서 오늘의 시작(00:00:00) 및 종료(23:59:59) 방법?컴퓨터는 현지 시간을 사용합니다.
var start = new Date();
start.setUTCHours(0,0,0,0);
var end = new Date();
end.setUTCHours(23,59,59,999);
alert( start.toUTCString() + ':' + end.toUTCString() );
이들로부터 UTC 시각을 취득할 필요가 있는 경우는,UTC()
.
dayjs 라이브러리의 경우 다음과 같은 사용 및 방법을 사용합니다.
로컬 GMT:
const start = dayjs().startOf('day'); // set to 12:00 am today
const end = dayjs().endOf('day'); // set to 23:59 pm today
const utc = require('dayjs/plugin/utc');
dayjs.extend(utc);
const start = dayjs.utc().startOf('day');
const end = dayjs.utc().endOf('day');
(더 이상 사용되지 않는) momentjs 라이브러리를 사용하면 문자열 전달을 통해 모멘트의 현재 날짜 객체에 및 메서드를 사용하여 이를 수행할 수 있습니다.'day'
인수:
로컬 GMT:
var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today
var start = moment.utc().startOf('day');
var end = moment.utc().endOf('day');
luxon.js 라이브러리를 사용하면 'day'를 매개 변수로 전달하여 startOf 및 endOf 메서드를 사용하여 동일한 작업을 수행할 수 있습니다.
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()를 삭제합니다.
왜 잠깐이면 안 되냐고 물으실지 모르겠지만, 정답은 여기 있습니다.
참고: Tvanfosson 병합 버전)
함수를 호출할 때 실제 날짜 => 날짜를 반환합니다.
export const today = {
iso: {
start: () => new Date(new Date().setHours(0, 0, 0, 0)).toISOString(),
now: () => new Date().toISOString(),
end: () => new Date(new Date().setHours(23, 59, 59, 999)).toISOString()
},
local: {
start: () => new Date(new Date(new Date().setHours(0, 0, 0, 0)).toString().split('GMT')[0] + ' UTC').toISOString(),
now: () => new Date(new Date().toString().split('GMT')[0] + ' UTC').toISOString(),
end: () => new Date(new Date(new Date().setHours(23, 59, 59, 999)).toString().split('GMT')[0] + ' UTC').toISOString()
}
}
// 사용방법
today.local.now(); //"2018-09-07T01:48:48.000Z" BAKU +04:00
today.iso.now(); // "2018-09-06T21:49:00.304Z" *
* 지역에 따라 현지 시간을 자동으로 변환하는 Java8의 Instant time type에 대응합니다.(글로벌 앱 작성 예정시)
MomentJs에서는 다음과 같이 선언할 수 있습니다.
const start = moment().format('YYYY-MM-DD 00:00:01');
const end = moment().format('YYYY-MM-DD 23:59:59');
GMT의 타임스탬프에 관심이 있는 경우, 다른 간격(시간:1000 * 60 * 60
, 12시간:1000 * 60 * 60 * 12
등)
const interval = 1000 * 60 * 60 * 24; // 24 hours in milliseconds
let startOfDay = Math.floor(Date.now() / interval) * interval;
let endOfDay = startOfDay + interval - 1; // 23:59:59:9999
사용할 수 있습니다.moment
이걸 위해서.
// for day start time
moment(moment().startOf('day')).format('HH:mm')
// for day end time
moment(moment().endOf('day')).format('HH:mm')
1개의 라이너 - 로컬 시간대를 고려하여 라이브러리 없음
const todayStart = new Date(new Date().setHours(0, 0, 0, 0))
const todayEnd = new Date(new Date().setHours(23, 59, 59, 999))
const tomorrowStart = new Date(new Date(new Date().setHours(0, 0, 0, 0)).setDate(new Date().getDate() + 1))
const tomorrowEnd = new Date(new Date(new Date().setHours(23, 59, 59, 999)).setDate(new Date().getDate() + 1))
const monthStart = new Date(new Date(new Date().getFullYear(), new Date().getMonth(), 1).setHours(0, 0, 0, 0))
const monthEnd = new Date(new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0).setHours(23, 59, 59, 999))
const nextMonthStart = new Date(new Date(new Date().getFullYear(), new Date().getMonth() + 1, 1).setHours(0, 0, 0, 0))
const nextMonthEnd = new Date(new Date(new Date().getFullYear(), new Date().getMonth() + 2, 0).setHours(23, 59, 59, 999))
console.log({
todayStart,
todayEnd,
tomorrowStart,
tomorrowEnd,
monthStart,
monthEnd,
nextMonthStart,
nextMonthEnd,
})
날짜 조작에는 date-fns 라이브러리를 사용하는 것이 좋습니다.이것은 정말 훌륭한 모듈러형 도구이며 일관성 있는 도구입니다.다음과 같이 하루를 시작하고 끝낼 수 있습니다.
var startOfDay = dateFns.startOfDay;
var endOfDay = dateFns.endOfDay;
console.log('start of day ==> ', startOfDay(new Date('2015-11-11')));
console.log('end of day ==> ', endOfDay(new Date('2015-11-11')));
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js"></script>
UTC 시작/종료에 관심이 있는 경우 를 사용하여 연산자를 모듈화할 수도 있습니다.
const now = new Date().getTime();
let startOfDay = now - (now % 86400000);
let endDate = startOfDay + 86400000;
여기서 86400은 1일의 초수이며 결과 변수는 에폭(밀리초)입니다.
괜찮으시다면Date
오브젝트:
const now = new Date().getTime();
let startOfDay = new Date(now - (now % 86400000));
let endDate = new Date(now - (now % 86400000) + 86400000);
조금 까다로울 수도 있지만, 당신은 그것을 이용할 수 있다.Intl.DateTimeFormat
.
아래는 시간대가 있는 날짜를 시작/종료 시간으로 변환하는 데 도움이 됩니다.
const beginingOfDay = (options = {}) => {
const { date = new Date(), timeZone } = options;
const parts = Intl.DateTimeFormat("en-US", {
timeZone,
hourCycle: "h23",
hour: "numeric",
minute: "numeric",
second: "numeric",
}).formatToParts(date);
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);
return new Date(
1000 *
Math.floor(
(date - hour * 3600000 - minute * 60000 - second * 1000) / 1000
)
);
};
const endOfDay = (...args) =>
new Date(beginingOfDay(...args).getTime() + 86399999);
const beginingOfYear = () => {};
console.log(beginingOfDay({ timeZone: "GMT" }));
console.log(endOfDay({ timeZone: "GMT" }));
console.log(beginingOfDay({ timeZone: "Asia/Tokyo" }));
console.log(endOfDay({ timeZone: "Asia/Tokyo" }));
// get current time for UTC timezone
const d = new Date();
const year = d.getUTCFullYear();
const month = d.getUTCMonth();
const day = d.getUTCDate();
// set time to begin day UTC
const startTime = Date.UTC(year, month, day, 0, 0, 0, 0);
//set time to end day UTC
const endTime = Date.UTC(year, month, day, 23, 59, 0, 0);
언급URL : https://stackoverflow.com/questions/8636617/how-to-get-start-and-end-of-day-in-javascript
'programing' 카테고리의 다른 글
리소스는 문서로 해석되지만 MIME 유형의 응용 프로그램/zip과 함께 전송됨 (0) | 2022.11.04 |
---|---|
datetime.date와 datetime을 결합하는 피토닉 방식.시간 객체 (0) | 2022.11.04 |
Python glob 다중 파일 형식 (0) | 2022.11.04 |
PHP를 통한 HTTP 인증 로그아웃 (0) | 2022.11.04 |
MariaDB 루트 로그인 문제(로그인은 가능하지만 보안은 불가) (0) | 2022.11.04 |