123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498 |
- var util = {};
- util.getTargetTimezone = function(val) {
- if (typeof val === "number") {
- return val;
- }
- let defaultValue = 8;
- let targetTimezone = defaultValue;
- try {
- const config = uni.vk.callFunctionUtil.getConfig();
- targetTimezone = config.targetTimezone;
- if (typeof targetTimezone !== "number") {
- targetTimezone = defaultValue;
- }
- } catch (err) {}
- return targetTimezone;
- };
- util.timeFormat = function(time, fmt = 'yyyy-MM-dd hh:mm:ss', targetTimezone) {
- try {
- targetTimezone = util.getTargetTimezone(targetTimezone);
- if (!time) {
- return "";
- }
- if (typeof time === "string" && !isNaN(time)) time = Number(time);
-
-
- let date;
- if (typeof time === "number") {
- if (time.toString().length == 10) time *= 1000;
- date = new Date(time);
- } else {
- date = time;
- }
- const dif = date.getTimezoneOffset();
- const timeDif = dif * 60 * 1000 + (targetTimezone * 60 * 60 * 1000);
- const east8time = date.getTime() + timeDif;
- date = new Date(east8time);
- let opt = {
- "M+": date.getMonth() + 1,
- "d+": date.getDate(),
- "h+": date.getHours(),
- "m+": date.getMinutes(),
- "s+": date.getSeconds(),
- "q+": Math.floor((date.getMonth() + 3) / 3),
- "S": date.getMilliseconds()
- };
- if (/(y+)/.test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
- }
- for (let k in opt) {
- if (new RegExp("(" + k + ")").test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (opt[k]) : (("00" + opt[k]).substr(("" + opt[k]).length)));
- }
- }
- return fmt;
- } catch (err) {
-
- return time;
- }
- };
- util.getFullTime = function(date, type = 0, targetTimezone) {
- if (!date) {
- return "";
- }
- targetTimezone = util.getTargetTimezone(targetTimezone);
- if (typeof date === "string" && !isNaN(date)) date = Number(date);
- if (typeof date == "number") {
- if (date.toString().length == 10) date *= 1000;
- date = new Date(date);
- }
- const dif = date.getTimezoneOffset();
- const timeDif = dif * 60 * 1000 + (targetTimezone * 60 * 60 * 1000);
- const east8time = date.getTime() + timeDif;
- date = new Date(east8time);
- let YYYY = date.getFullYear() + '';
- let MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
- let DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
- let hh = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours());
- let mm = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes());
- let ss = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
- if (type === 2) {
- return {
- YYYY: Number(YYYY),
- MM: Number(MM),
- DD: Number(DD),
- hh: Number(hh),
- mm: Number(mm),
- ss: Number(ss),
- year: Number(YYYY),
- month: Number(MM),
- day: Number(DD),
- hour: Number(hh),
- minute: Number(mm),
- second: Number(ss),
- };
- } else if (type === 1) {
- return YYYY + "" + MM + "" + DD + "" + hh + "" + mm + "" + ss;
- } else {
- return YYYY + "-" + MM + "-" + DD + " " + hh + ":" + mm + ":" + ss;
- }
- };
- util.getWeekStartAndEnd = function(addWeekCount = 0, date = new Date(), targetTimezone) {
- targetTimezone = util.getTargetTimezone(targetTimezone);
- let res = {};
- const dif = date.getTimezoneOffset();
- const timeDif = dif * 60 * 1000 + (targetTimezone * 60 * 60 * 1000);
- const east8time = date.getTime() + timeDif;
- const east8Date = new Date(east8time);
-
- let week = east8Date.getDay();
-
- let month = east8Date.getDate();
-
- let oneDayMillisecond = 1000 * 60 * 60 * 24;
-
- date = new Date(date.getTime() + (oneDayMillisecond * 7 * addWeekCount));
-
- let minusDay = week != 0 ? week - 1 : 6;
- let weekStart = new Date(date.getTime() - (oneDayMillisecond * minusDay));
- let weekEnd = new Date(weekStart.getTime() + (oneDayMillisecond * 6));
- let weekStartObj = util.getFullTime(weekStart, 2);
- let weekEndObj = util.getFullTime(weekEnd, 2);
-
- res.weekStart = new Date(`${weekStartObj.year}/${weekStartObj.month}/${weekStartObj.day}`).getTime() - timeDif;
-
- res.weekEnd = new Date(`${weekEndObj.year}/${weekEndObj.month}/${weekEndObj.day}`).getTime() + (24 * 60 * 60 * 1000 - 1) - timeDif;
- return res;
- }
- util.getCommonTime = function(date = new Date(), targetTimezone) {
- if (typeof date === "string" && !isNaN(date)) date = Number(date);
- if (typeof date == "number") {
- if (date.toString().length == 10) date *= 1000;
- date = new Date(date);
- }
- targetTimezone = util.getTargetTimezone(targetTimezone);
- let res = {};
- const dif = date.getTimezoneOffset();
- const timeDif = dif * 60 * 1000 + (targetTimezone * 60 * 60 * 1000);
- const { year, month, day, hour, minute, second } = util.getFullTime(date, 2);
-
- res.now = {
- year,
- month,
- day,
- hour,
- minute,
- second
- };
-
- let month_last_day = new Date(year, month, 0).getDate();
-
- let year_last_day = new Date(year, 12, 0).getDate();
-
- res.todayStart = new Date(`${year}/${month}/${day}`).getTime() - timeDif;
-
- res.today12End = new Date(`${year}/${month}/${day}`).getTime() + (12 * 60 * 60 * 1000 - 1) - timeDif;
-
- res.todayEnd = new Date(`${year}/${month}/${day}`).getTime() + (24 * 60 * 60 * 1000 - 1) - timeDif;
-
- res.monthStart = new Date(`${year}/${month}/1`).getTime() - timeDif;
-
- res.monthEnd = new Date(`${year}/${month}/${month_last_day}`).getTime() + (24 * 60 * 60 * 1000 - 1) - timeDif;
-
- res.yearStart = new Date(`${year}/1/1`).getTime() - timeDif;
-
- res.yearEnd = new Date(`${year}/12/${year_last_day}`).getTime() + (24 * 60 * 60 * 1000 - 1) - timeDif;
-
- let year_last = year;
- let month_last = month - 1;
- if (month_last === 0) {
- month_last = 12;
- year_last = year - 1;
- }
- let month_last_day_last = new Date(year_last, month_last, 0).getDate();
-
- res.lastMonthStart = new Date(`${year_last}/${month_last}/1`).getTime() - timeDif;
-
- res.lastMonthEnd = new Date(`${year_last}/${month_last}/${month_last_day_last}`).getTime() + (24 * 60 * 60 *
- 1000 - 1) - timeDif;
-
- let weekObj = util.getWeekStartAndEnd(0, date);
-
- res.weekStart = weekObj.weekStart;
-
- res.weekEnd = weekObj.weekEnd;
-
- res.months = [];
- res.months[0] = {
- monthStart: res.monthStart,
- monthEnd: res.monthEnd
- };
- for (let i = 1; i <= 12; i++) {
-
- let month_last_day = new Date(year, i, 0).getDate();
-
- let monthStart = new Date(`${year}/${i}/1`).getTime() - timeDif;
-
- let monthEnd = new Date(`${year}/${i}/${month_last_day}`).getTime() + (24 * 60 * 60 * 1000 - 1) - timeDif;
- res.months[i] = {
- monthStart,
- monthEnd
- };
- }
- return res;
- };
- util.getMonthStartAndEnd = function(obj, targetTimezone) {
- targetTimezone = util.getTargetTimezone(targetTimezone);
- let res = {
- startTime: null,
- endTime: null
- };
- let { year, month } = obj;
- if (year > 0 && month > 0) {
- const dif = new Date().getTimezoneOffset();
- const timeDif = dif * 60 * 1000 + (targetTimezone * 60 * 60 * 1000);
- let month_last_day = new Date(year, month, 0).getDate();
-
- res.startTime = new Date(`${year}/${month}/1`).getTime() - timeDif;
-
- res.endTime = new Date(`${year}/${month}/${month_last_day}`).getTime() + (24 * 60 * 60 * 1000 - 1) - timeDif;
- }
- return res;
- }
- util.getDayOffsetStartAndEnd = function(count = 0, time, targetTimezone) {
- targetTimezone = util.getTargetTimezone(targetTimezone);
- let res = {};
- if (typeof time === "string" && !isNaN(time)) time = Number(time);
- let date;
- if (time) {
- if (typeof time === "number") {
- if (time.toString().length == 10) time *= 1000;
- date = new Date(time);
- } else {
- date = time;
- }
- } else {
- date = new Date();
- }
- const dif = date.getTimezoneOffset();
- const timeDif = dif * 60 * 1000 + (targetTimezone * 60 * 60 * 1000);
-
- let oneDayMillisecond = 1000 * 60 * 60 * 24;
-
- date = new Date(date.getTime() + (oneDayMillisecond * 1 * count));
- let dateObj = util.getFullTime(date, 2);
-
- res.startTime = new Date(`${dateObj.year}/${dateObj.month}/${dateObj.day}`).getTime() - timeDif;
-
- res.endTime = new Date(`${dateObj.year}/${dateObj.month}/${dateObj.day}`).getTime() + (24 * 60 * 60 * 1000 - 1) - timeDif;
- return res;
- }
- util.getMonthOffsetStartAndEnd = function(count = 0, time, targetTimezone) {
- targetTimezone = util.getTargetTimezone(targetTimezone);
- let res = {};
- if (typeof time === "string" && !isNaN(time)) time = Number(time);
- let date;
- if (time) {
- if (typeof time === "number") {
- if (time.toString().length == 10) time *= 1000;
- date = new Date(time);
- } else {
- date = time;
- }
- } else {
- date = new Date();
- }
- const dif = date.getTimezoneOffset();
- const timeDif = dif * 60 * 1000 + (targetTimezone * 60 * 60 * 1000);
- let dateObj = util.getFullTime(date, 2);
- let month = dateObj.month + count;
- let year = dateObj.year;
- if (month > 12) {
- year = year + Math.floor(month / 12);
- month = Math.abs(month) % 12;
- } else if (month <= 0) {
- year = year - 1 - Math.floor(Math.abs(month) / 12);
- month = 12 - Math.abs(month) % 12;
- }
- let month_last_day = new Date(year, month, 0).getDate();
-
- res.startTime = new Date(`${year}/${month}/1`).getTime() - timeDif;
-
- res.endTime = new Date(`${year}/${month}/${month_last_day}`).getTime() + (24 * 60 * 60 * 1000 - 1) - timeDif;
- return res;
- }
- util.getYearOffsetStartAndEnd = function(count = 0, time, targetTimezone) {
- targetTimezone = util.getTargetTimezone(targetTimezone);
- let res = {};
- if (typeof time === "string" && !isNaN(time)) time = Number(time);
- let date;
- if (time) {
- if (typeof time === "number") {
- if (time.toString().length == 10) time *= 1000;
- date = new Date(time);
- } else {
- date = time;
- }
- } else {
- date = new Date();
- }
- const dif = date.getTimezoneOffset();
- const timeDif = dif * 60 * 1000 + (targetTimezone * 60 * 60 * 1000);
- let dateObj = util.getFullTime(date, 2);
- let year = dateObj.year + count;
-
- res.startTime = new Date(`${year}/1/1`).getTime() - timeDif;
-
- res.endTime = new Date(`${year}/12/31`).getTime() + (24 * 60 * 60 * 1000 - 1) - timeDif;
- return res;
- };
- util.isLeapYear = function(year) {
- if (typeof year === "undefined") {
- let { now } = util.getCommonTime();
- year = now.year;
- } else if (typeof year === "object") {
- let { now } = util.getCommonTime(year);
- year = now.year;
- }
- if (((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0)) {
- return true;
- } else {
- return false;
- }
- }
- util.isQingming = function(data = new Date()) {
- let { now } = util.getCommonTime(data);
- let { year, month, day } = now;
- let key = false;
-
- if (util.isLeapYear(year) || util.isLeapYear(year - 1)) {
- if (month === 4 && day === 4) {
- key = true;
- }
- } else {
- if (month === 4 && day === 5) {
- key = true;
- }
- }
- return key;
- }
- util.getOffsetTime = function(date = new Date(), obj) {
- let time = (typeof date === "number") ? new Date(date) : date;
- let year = obj.year || obj.y;
- let month = obj.month || obj.m;
- let day = obj.day || obj.d;
- let hours = obj.hours || obj.hh;
- let minutes = obj.minutes || obj.mm;
- let seconds = obj.seconds || obj.ss;
- let { mode = "after" } = obj;
- if (mode == "before") {
- year *= -1;
- month *= -1;
- day *= -1;
- hours *= -1;
- minutes *= -1;
- seconds *= -1;
- }
- if (year) {
- time = time.setFullYear(time.getFullYear() + year);
- time = new Date(time);
- }
- if (month) {
- time = time.setMonth(time.getMonth() + month);
- time = new Date(time);
- }
- if (day) {
- time = time.setDate(time.getDate() + day);
- time = new Date(time);
- }
- if (hours) {
- time = time.setHours(time.getHours() + hours);
- time = new Date(time);
- }
- if (minutes) {
- time = time.setMinutes(time.getMinutes() + minutes);
- time = new Date(time);
- }
- if (seconds) {
- time = time.setSeconds(time.getSeconds() + seconds);
- time = new Date(time);
- }
- return time.getTime();
- }
- export default util;
|