1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- export function getNumberOfWeeks(year){
- const firstDayOfYear = new Date(year, 0, 1);
- const lastDayOfYear = new Date(year, 11, 31);
- const daysInYear = (lastDayOfYear - firstDayOfYear) / (24 * 60 * 60 * 1000) + 1;
- const weeksInYear = Math.ceil(daysInYear / 7);
- return weeksInYear;
- }
- export function currentWeek(){
- let now = new Date();
- let currentYear = now.getFullYear();
- let firstDayOfYear = new Date(currentYear, 0, 1);
- let diffDays = Math.floor((now - firstDayOfYear) / (24 * 60 * 60 * 1000));
- let currentWeek = Math.ceil((diffDays + firstDayOfYear.getDay() + 1) / 7);
- return currentWeek
- }
- export function getDateByWeek(week, year) {
- year = year || new Date().getFullYear();
- let currentDate = new Date(year, 0, 1);
- let numDays = currentDate.getDay();
- if (numDays === 0) numDays = 7;
- let firstThursday = new Date(currentDate.getTime() + (4 - numDays) * 86400000);
- let firstWeek = Math.ceil((firstThursday.getDate() - 1) / 7);
-
- week = week + firstWeek;
- if (week === 0) {
- year -= 1;
- week = getWeekNumber(new Date(year, 11, 31));
- } else if (week > 52 && getWeekNumber(new Date(year + 1, 0, 3)) === 1) {
- year += 1;
- week = 1;
- }
-
- currentDate = new Date(year, 0, 1);
- currentDate.setDate(currentDate.getDate() + (week - 1) * 7);
- return currentDate;
- }
-
- function getWeekNumber(date) {
- let currentDate = new Date(date.getTime());
- let numDays = currentDate.getDay();
- if (numDays === 0) numDays = 7;
- currentDate.setDate(currentDate.getDate() + 3 - numDays);
- let firstDayYear = new Date(currentDate.getFullYear(), 0, 1);
- let firstWeek = Math.ceil((firstDayYear.getDay() - firstDayYear.getDay() % 7) / 7);
- let weekNumber = Math.ceil((currentDate.getDay() * 5 - firstDayYear.getDay() + 10) / 7);
- return firstWeek + weekNumber;
- }
- export function parseTime(time, cFormat) {
- if (arguments.length === 0 || !time) {
- return null
- }
- const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
- let date
- if (typeof time === 'object') {
- date = time
- } else {
- if ((typeof time === 'string')) {
- if ((/^[0-9]+$/.test(time))) {
-
- time = parseInt(time)
- } else {
-
-
- time = time.replace(new RegExp(/-/gm), '/')
- }
- }
- if ((typeof time === 'number') && (time.toString().length === 10)) {
- time = time * 1000
- }
- date = new Date(time)
- }
- const formatObj = {
- y: date.getFullYear(),
- m: date.getMonth() + 1,
- d: date.getDate(),
- h: date.getHours(),
- i: date.getMinutes(),
- s: date.getSeconds(),
- a: date.getDay()
- }
- const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
- const value = formatObj[key]
-
- if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
- return value.toString().padStart(2, '0')
- })
- return time_str
- }
|