分享一下常用的工具類ES6封裝
分享一下目前專案中用到的工具類,僅供參考,直接引用可能會報錯,用到的第三方外掛需要引入對應的包和模組才行
/** * 公有方法類 */ import Chinese from '../../../static/js/i18n/zh-cn.js'; import English from '../../../static/js/i18n/en-us.js'; import constant from '../base/constant'; import moment from 'moment'; moment.defineLocale('zh-cn', { weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_') }); //import moment from 'moment' export default { /** * 設定cookie * @param cname * @param cvalue * @param expires */ setCookie(cname, cvalue, expires) { let exp = new Date(); exp.setTime(exp.getTime() + 12 * 60 * 60 * 1000); document.cookie = cname + '=' + cvalue + ';expires=' + exp.toGMTString(); }, /** * 清除cookie * @param name */ clearCookie: function(name) { this.setCookie(name, '', -1); }, /** * 獲取系統當前的語言 * @returns {*} */ getCurrentLanguage() { let language = localStorage.getItem('language'); if (language === 'en') { language = 'en_US'; } else { language = 'zh_CN'; } return language || navigator.language; }, /** * 切換英文語言包 * @return {{lang, estacionamento_plataforma, login, logout}} */ toggleLanguage: function() { //獲取瀏覽器的語言 let language = (navigator.language || navigator.browserLanguage).toLowerCase(); if (window.localStorage) { if (localStorage.languages != null && localStorage.languages != undefined) { language = JSON.parse(localStorage.languages).value; } } else { this.toggoleLang('Error!'); } if (language === 'zh-cn') { return Chinese; } else { return English; } }, /** * 獲取cookie * @param cname * @returns {*} */ getCookie(cname) { let cookieArr = document.cookie.split('; '); for (let i = 0; i < cookieArr.length; i++) { let arr = cookieArr[i].split('='); if (arr[0] === cname) { return arr[1]; } } }, /** * 判斷 中國 行動電話號碼的 正則表示式 * @param phone * @returns {*} */ judgePhone(phone) { let pattern = new RegExp(/^((1[3,5,8][0-9])|(14[5,7])|(16[6])|(17[0,6,7,8])|(19[7,8,9]))\d{8}$/); let flag = pattern.test(phone); if (flag === false) { return '+64'; } else { return '+86'; } }, /** * 轉換時間戳 * @param timestamp * @return {string} */ formatDateYearMonthDay(timestamp) { if (timestamp) { return moment(timestamp * 1000).format(constant.YYYYMMDD); } }, /** * 轉換時間戳 時分秒 * @param timestamp * @return {string} */ formatDateHourMinSec(timestamp) { if (timestamp) { return moment(timestamp * 1000).format(constant.HHMMII); } }, /** * 轉換時間戳 年月日時分秒 * @param timestamp * @return {string} */ formatDateYearMonthDayAndHms(timestamp) { if (timestamp) { return moment(timestamp * 1000).format(constant.YYYYMMDDHHMMII); } }, /** * 獲取今天0點時間戳 秒 * @return {number} */ getTodayTimeStamp() { return new Date(new Date().setHours(0, 0, 0, 0)) / 1000; }, /** * 獲取當前時間 * @return {*} */ getThisTime() { return this.formatDateYearMonthDayAndHms(new Date(new Date()) / 1000); }, /** * 獲取今天 23:59分的時間戳 * @return {number} */ getTodayTimeEnd() { return (new Date(new Date().setHours(0, 0, 0, 0)) / 1000) + (24 * 60 * 60) - 1; }, /** * 獲取當前年 */ getThisYear() { return moment().format('YYYY'); }, /** * 獲取本月實際 2017 -01 */ getThisMonthDate() { return moment().format('YYYY-MM'); }, /** * 獲取今天 2017-01-01 */ getTodayDate() { return moment().format('YYYY-MM-DD'); }, /** * 將秒轉換為 天-時-分-秒 * @param msd {Number} 秒數 * */ secondToDate(msd) { let time = msd; if (time != null && time != '') { if (time > 60 && time < 60 * 60) { time = parseInt(time / 60.0) + '分鐘' + parseInt((parseFloat(time / 60.0) - parseInt(time / 60.0)) * 60) + '秒'; } else if (time >= 60 * 60 && time < 60 * 60 * 24) { time = parseInt(time / 3600.0) + '小時' + parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) + '分鐘' + parseInt((parseFloat((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) - parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60)) * 60) + '秒'; } else if (time >= 60 * 60 * 24) { time = parseInt(time / 3600.0 / 24) + '天' + parseInt((parseFloat(time / 3600.0 / 24) - parseInt(time / 3600.0 / 24)) * 24) + '小時' + parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) + '分鐘' + parseInt((parseFloat((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60) - parseInt((parseFloat(time / 3600.0) - parseInt(time / 3600.0)) * 60)) * 60) + '秒'; } else { time = parseInt(time) + '秒'; } } return time; }, /** * 獲取年月日 星期 時分秒 * @return {string} */ geyThisDateYYMMDDHmi() { return moment().format(`YYYY年MM月DD日 dddd HH:mm:ss`); }, /** * 轉換時間戳 年月日時分秒 * @param timestamp * @return {string} */ formatDateYearMonthDayAndHmsChinese(timestamp) { if (timestamp) { return moment(timestamp * 1000).format(constant.CHANESEYYYYMMDDHHMMII); } }, /** * 獲得本月的截止日期 * @return {*|string} */ getMonthEndDate() { let now = new Date(); //當前日期 let nowMonth = now.getMonth(); //當前月 let nowYear = now.getFullYear(); //當前年 let monthEndDate = new Date(nowYear, nowMonth, this.getMonthDays(nowMonth)); return this.formatDate(monthEndDate); }, /** * 獲得某月的天數 * @param myMonth * @return {number} */ getMonthDays(myMonth) { let now = new Date(); //當前日期 let nowYear = now.getFullYear(); //當前年 let monthStartDate = new Date(nowYear, myMonth, 1); let monthEndDate = new Date(nowYear, myMonth + 1, 1); let days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24); return days; }, /** * 格局化日期:yyyy-MM-dd * @param date * @return {string} */ formatDate(date) { let year = date.getFullYear(); let month = date.getMonth() + 1; let weekDay = date.getDate(); if (month < 10) { month = '0' + month; } if (weekDay < 10) { weekDay = '0' + weekDay; } return (year + '-' + month + '-' + weekDay); }, /** * 獲得本月的開始日期時間戳 * @return {*|string} */ getMonthBeginDateStamp() { let now = new Date(); //當前日期 let nowMonth = now.getMonth(); //當前月 let nowYear = now.getFullYear(); //當前年 let monthStartDate = new Date(nowYear, nowMonth, 1); return this.getFormattertDateTimeStamp(this.formatDate(monthStartDate) + ' ' + '00:00:00') / 1000; }, /** * 獲得本月的截止日期時間戳 * @return {*|string} */ getMonthEndDateStamp() { let now = new Date(); //當前日期 let nowMonth = now.getMonth(); //當前月 let nowYear = now.getFullYear(); //當前年 let monthEndDate = new Date(nowYear, nowMonth, this.getMonthDays(nowMonth)); return this.getFormattertDateTimeStamp(this.formatDate(monthEndDate) + ' ' + '23:59:59') / 1000; }, /** * 根據指定月份時間戳獲得最後一天日期時間戳 * @param stamp 時間戳 * @return {number} */ getFormattertMonthEndDateStamp(stamp) { let arr = this.formatDateYearMonthDay(stamp).split('-'); let newYear = arr[0]; //取當前的年份 let newMonth = arr[1]++; //取下一個月的第一天,方便計算(最後一天不固定) if (arr[1] > 12) { //如果當前大於12月,則年份轉到下一年 newMonth -= 12; //月份減 newYear++; //年份增 } let oneDay = (60 * 60 * 24 * 1000) - 1000; let date = new Date(newYear, newMonth, 1); //取當年當月中的第一天 let lastDay = (new Date(date.getTime() - oneDay)).getDate(); //獲取當月最後一天日期 let fmt = newYear + '/' + newMonth + '/' + lastDay + ' ' + '23:59:59'; return Date.parse(new Date(fmt)) / 1000; }, /** * 獲取當年第一天的時間戳秒數 * @return {number} */ getFirstDayOfYear() { let date = new Date(); date.setDate(1); date.setMonth(0); let y = date.getFullYear(); //年 let m = date.getMonth() + 1; //月 let d = date.getDate(); //日 let fmt = y + '/' + m + '/' + d + ' ' + '00:00:00'; return Date.parse(new Date(fmt)) / 1000; }, /** * 獲得指定日期的時間戳秒數 * @param formatterDate YYYY-MM-DD hh:mm:ii * @return {number} 時間戳秒數 */ getFormattertDateTimeStamp(formatterDate) { if (formatterDate.indexOf('-') != -1) { return Date.parse(new Date(formatterDate.replace(/-/g, '/'))); } else { return Date.parse(new Date(formatterDate)); } }, /** * 轉換時間戳沒有年份 * @param timestamp * @return {string} */ formatDateNoyear(timestamp) { if (timestamp) { let times = null; String(timestamp).length > 10 ? times = timestamp : timestamp = timestamp * 1000; if (window.i18n.locale == 'zh') { return moment(times).format('MM-DD HH:mm'); } else { let newDate = new Date(); newDate.setTime(times); return newDate.toString().substr(4, 6) + 'th ' + newDate.toString().substr(16, 5); } } }, /** * 轉換時間戳沒有小時數 * @param timestamp * @return {string} */ formatDateNoHour(timestamp) { if (timestamp) { let times = null; String(timestamp).length > 10 ? times = timestamp : timestamp = timestamp * 1000; if (window.i18n.locale == 'zh') { return moment(times).format('YYYY-MM-DD'); } else { let newDate = new Date(); newDate.setTime(times); return newDate.toString().substr(4, 6) + 'th '; } } }, /** * 保留兩位小數不四捨五入 * @param value * @return {*} */ tofixPrice(value) { if (value === 0) { return '0.00'; } if (value) { let showTwo = value.toFixed(3); return showTwo.substring(0, showTwo.lastIndexOf('.') + 3); } }, /** * 判斷是否是物件 * @param obj * @return {boolean} */ isEmpty(obj) { return (Object.keys(obj).length === 0 && obj.constructor === Object); }, /** * 過濾圖片 只保留七牛雲的ServerName */ filterUpdateImg(imgs) { return imgs.map((img) => { if (img.response && img.response.serverName) { return img.response.serverName; } else if (img.url) { if (img.url.indexOf('.com/') != -1) { let subLen = img.url.indexOf('.com/') + 5; return img.url.substring(subLen, img.url.length); } else if (img.url.indexOf('.cn/') != -1) { let subLen = img.url.indexOf('.cn/') + 4; return img.url.substring(subLen, img.url.length); } } return img; }); }, /** * 移除物件中的空字串 * @param test * @param recurse */ deleteEmptyString(test, recurse) { for (let i in test) { if (test[i] === '') { delete test[i]; } else if (recurse && typeof test[i] === 'object') { this.deleteEmptyString(test[i], recurse); } } }, /** * 刪除物件中的空Key * @param test * @param recurse */ deleteEmptyObject(test, recurse) { for (let i in test) { if (this.isEmpty(test[i])) { delete test[i]; } else if (recurse && typeof test[i] === 'object') { this.deleteEmptyObject(test[i], recurse); } } }, /** * 移除物件中的無效屬性 * @param obj * @return {*} */ removeEmpty(obj) { Object.keys(obj).forEach(function(key) { (obj[key] && typeof obj[key] === 'object') && this.removeEmpty(obj[key]) || (obj[key] === undefined || obj[key] === null || obj[key] === '') && delete obj[key]; }); return obj; }, /** * 深度拷貝 * @param {*} obj */ deepCloneObject(obj) { let objClone = Array.isArray(obj) ? [] : {}; if (obj && typeof obj === 'object') { for (let key in obj) { if (obj.hasOwnProperty(key)) { //判斷ojb子元素是否為物件,如果是,遞迴複製 if (obj[key] && typeof obj[key] === 'object') { objClone[key] = this.deepCloneObject(obj[key]); } else { //如果不是,簡單複製 objClone[key] = obj[key]; } } } } return objClone; }, /** * json物件轉FormData * @param obj * @returns {*} */ jsonToFormData(obj) { // 建立表單物件 let formData = new FormData(); if (obj) { for (let k in obj) { formData.append(k, obj[k]); } } return formData; }, /** * 圖片預覽 * @param {*} file */ previewImage(file, domId) { var MAXWIDTH = 260; var MAXHEIGHT = 180; var dom = domId || 'preview'; var div = document.getElementById(dom); let _this = this; if (file.files && file.files[0]) { div.innerHTML = '<img id=preview-' + dom + '>'; var img = document.getElementById('preview-' + dom); img.onload = function() { var rect = _this.clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight); img.width = rect.width; img.height = rect.height; // img.style.marginLeft = rect.left+'px'; img.style.marginTop = rect.top + 'px'; }; var reader = new FileReader(); reader.onload = function(evt) { img.src = evt.target.result; }; reader.readAsDataURL(file.files[0]); } else { // 相容IE var sFilter = 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="'; file.select(); var src = document.selection.createRange().text; div.innerHTML = '<img id=imghead>'; let img = document.getElementById('imghead'); img.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = src; var rect = _this.clacImgZoomParam(MAXWIDTH, MAXHEIGHT, img.offsetWidth, img.offsetHeight); //let status = ('rect:' + rect.top + ',' + rect.left + ',' + rect.width + ',' + rect.height); div.innerHTML = "<div id=divhead style='width:" + rect.width + 'px;height:' + rect.height + 'px;margin-top:' + rect.top + 'px;' + sFilter + src + "\"'></div>"; } }, /** * 相容性檢視設定 * @param {*} maxWidth * @param {*} maxHeight * @param {*} width * @param {*} height */ clacImgZoomParam(maxWidth, maxHeight, width, height) { var param = { top: 0, left: 0, width: width, height: height }; if (width > maxWidth || height > maxHeight) { let rateWidth = width / maxWidth; let rateHeight = height / maxHeight; if (rateWidth > rateHeight) { param.width = maxWidth; param.height = Math.round(height / rateWidth); } else { param.width = Math.round(width / rateHeight); param.height = maxHeight; } } param.left = Math.round((maxWidth - param.width) / 2); param.top = Math.round((maxHeight - param.height) / 2); return param; } };
相關推薦
分享一下常用的工具類ES6封裝
分享一下目前專案中用到的工具類,僅供參考,直接引用可能會報錯,用到的第三方外掛需要引入對應的包和模組才行 /** * 公有方法類 */ import Chinese from '../../../static/js/i18n/zh-cn.js'; import En
javascript 總結(常用工具類的封裝)
** JavaScript ** 1. type 型別判斷 isString (o) { //是否字串 return Object.prototype.toString.call(o).slice(8, -1) === 'String' } isNumb
專案經驗分享——Java常用工具類集合
寫在前面本文涉及的工具類部分是自己編寫,另一部分是在專案裡收集的。工具類涉及資料庫連線、格式轉換、檔案操作、傳送郵件等等。提高開發效率,歡迎收藏與轉載。資料庫連線工具類資料庫連線工具類——僅僅獲得連線物件 ConnDB.javapackage com.util;import j
常用JSON工具類JsonUtil封裝
前言 專案中經常會有String轉Object以及Object轉Json字串的需求,故封裝一個常用Json工具類 Maven依賴 <dependency> <groupId>org.codehau
【常用工具類】SharedPreferences封裝類SPUtils
public class SPUtils { /** * 儲存在手機裡面的檔名 */ public static final String FILE_NAME = "share_data"; /** * 儲
Java常用工具類封裝——Base64 編碼和解碼
Base64 編碼和解碼工具類,供參考。 import java.io.*; /** * Base64 編碼和解碼。 * * @author jiangshuai * @date 2016年10月03日 */ public class Base64 { p
Java常用工具類封裝——String操作工具類
專案中經常需要用到String的一些操作,結合看到的一些前人的工具類抽取,編寫了如下針對String的常用操作的工具類,供大家參考。 package com.mkyong.common; import java.util.ArrayList; import
Java常用工具類封裝——連線資料庫的工具類
資料庫操作工具類,供大家參考。 package com.itjh.javaUtil; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement
基於Android系統Api封裝常用工具類
專案地址 https://github.com/h4de5ing/AndroidCommon/blob/master/README-cn.md gradle使用方式 compile 'com.code19.library:library:0.1.2' 常用工具類 使用示
最全面的Java字節byte操作,處理Java基本數據的轉換及進制轉換操作工具,流媒體及java底層開發項目常用工具類
進制 string 常用工具類 cat i++ logs 指定位置 tput off 前言:用於處理Java基本數據的轉換及進制轉換操作工具 一、實現功能 1、int預byte互轉 2、int與byte[]互轉 3、short與byte互轉 4、short與byte[]互轉
C#常用工具類——Excel操作類(ZT)
ada fin bject sta area exec public excel文件 站點 本文轉載於: http://www.cnblogs.com/zfanlong1314/p/3916047.html 1 /// 常用工具類—&mdash
Android 工具類 SharedPreferences 封裝
state out into bool 替換 ole enc 例子 read SharedPreferences 是 Android 數據存儲方式中的一種,特別適合用來存儲少量的、格式簡單的數據,比如應用程序的各種配置信息,如是否打開音效,是否開啟震動等等。 Shar
Android常用工具類
cti def air exp -a src 重復元素 nec empty 主要介紹總結的Android開發中常用的工具類,大部分同樣適用於Java。目前包括HttpUtils、DownloadManagerPro、ShellUtils、PackageUtils、Prefe
【spring】spirng中的常用工具類
ren handle file 監控 拷貝 trac convert cas har 一、概述 很多時候,很多工具類其實spring中就已經提供,常用的工具類有: 參考:https://www.cnblogs.com/langtianya/p/3875103
常用工具類
回文 字符串 log 構建 對象 數據 for 靜態 tabs 字符串連接 方法1:使用“+” int score=80;String info="成績"+score; 方法2:使用String類的concat()方法 Strin
並發編程常用工具類之countDownLatch和cyclicBarrier的使用對比
開放 spa 圖片 我們 啟用 線程 分享 ride 在線 1.CountDownLatch countDownLatch的作用是讓一組線程等待其他線程完成工作以後在執行,相當於加強版的join(不懂可以百度一下join的用法),一般在初始化的時候會在構
並發編程常用工具類(二) SymaPhore實現線程池
調用 eve lec 示例 信號 使用 個人 string 實現 1.symaPhore簡介 symaphore(信號量)用來控制同時訪問某個資源的線程數量,一般用在並發流量控制。個人對它的理解相當於是接待室每次只能接待固定數量的人,當達到最高接待數的時
Java 常用工具類整理
一、org.apache.commons.io.IOUtils closeQuietly 關閉一個IO流、socket、或者selector且不丟擲異常。通常放在finally塊。 toString 轉換IO流、 Uri、 byte[]為String。
Java 常用工具類
PageBaen 分頁工具類 package com.strurts.utli; import java.util.Map; import javax.servlet.http.HttpServletRequest; public class PageBean {
java常用工具類(一)—— Map 與 Bean 之間的互相轉換
import net.bytebuddy.implementation.bytecode.Throw; import org.springframework.cglib.beans.BeanMap; import java.beans.PropertyDescriptor; import java.lang