uno-js
Version:
JS/TS common used functions, zero dependencies
34 lines (33 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDateOfISOWeek = exports.getIsoYear = exports.getIsoYearByDate = exports.getWeekIsoOfYear = exports.getWeekIsoNumber = exports.getWeekOfYear = exports.getWeekNumber = void 0;
const getWeekNumber = (date) => {
const onejan = new Date(date.getFullYear(), 0, 1);
return Math.ceil(((date.getTime() - onejan.getTime()) / 86400000 + onejan.getDay() + 1) / 7);
};
exports.getWeekNumber = getWeekNumber;
const getWeekOfYear = () => (0, exports.getWeekNumber)(new Date());
exports.getWeekOfYear = getWeekOfYear;
const getWeekIsoNumber = (date) => {
const dayOfWeek = date.getDay();
const thursday = new Date(date.getFullYear(), date.getMonth(), date.getDate() + (4 - dayOfWeek));
return Math.ceil(((thursday.getTime() - new Date(thursday.getFullYear(), 0, 1).getTime()) / 86400000 + 1) / 7);
};
exports.getWeekIsoNumber = getWeekIsoNumber;
const getWeekIsoOfYear = () => (0, exports.getWeekIsoNumber)(new Date());
exports.getWeekIsoOfYear = getWeekIsoOfYear;
const getIsoYearByDate = (date) => {
const dayOfWeek = date.getDay() === 0 ? 7 : date.getDay();
const thursday = new Date(date);
thursday.setDate(date.getDate() + (4 - dayOfWeek));
return thursday.getFullYear();
};
exports.getIsoYearByDate = getIsoYearByDate;
const getIsoYear = () => (0, exports.getIsoYearByDate)(new Date());
exports.getIsoYear = getIsoYear;
const getDateOfISOWeek = (week, year) => {
const isoReferenceDate = new Date(year, 0, 4);
const firstMondayOfISOWeek = new Date(year, 0, 4 - ((isoReferenceDate.getDay() + 6) % 7));
return new Date(firstMondayOfISOWeek.getFullYear(), firstMondayOfISOWeek.getMonth(), firstMondayOfISOWeek.getDate() + (week - 1) * 7);
};
exports.getDateOfISOWeek = getDateOfISOWeek;