微信小程序日期转换、比较、加减
直接上干货:
在utils目录下新建一个dateUtil.js,代码如下:(在需要用的地方引入这个js,调用相关方法传入对应参数就可以使用了)
该工具脚本,实用性很高,通用于各类前端项目,熟悉后亦可以自由扩展,使用中发现问题还请道友留言提示下,本人会同步更新:
//日期转时间戳
function getUnixTime(dateStr){
var newstr = dateStr.replace(/-/g,'/');
var date = new Date(newstr);
var time_str = date.getTime().toString();
return time_str.substr(0, 10);
} //时间戳转日期,falg:true表示只要年月日,part: year month date
function toDate(number,flag,part) {
var n = number;
var date = new Date(parseInt(n) * 1000);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
h = h < 10 ? ('0' + h) : h;
var minute = date.getMinutes();
var second = date.getSeconds();
minute = minute < 10 ? ('0' + minute) : minute;
second = second < 10 ? ('0' + second) : second;
if(flag){
if(part == "year"){
return y;
}else if(part == "month"){
return m;
}else if(part == "date"){
return n;
}
return y + '-' + m + '-' + d;
}
return y + '-' + m + '-' + d + ' ' + h + ':' + minute+':' + second;
} //判断两个日期时间戳相差多少天,参数为时间戳
function dateCompare(dateTimeStamp1,dateTimeStamp2){
var dayNum = 0;
if(dateTimeStamp1 > dateTimeStamp2){
dayNum = Math.floor((dateTimeStamp1 - dateTimeStamp2) / 86400);
}else{
dayNum = Math.floor((dateTimeStamp2 - dateTimeStamp1) / 86400);
}
return dayNum;
} //判断过去某个时间点到当前时间是否达到多少天,可以用来定期清理缓存
function datePassDays(dateTimeStamp,days){
var now = getUnixTime(formatDateThis(new Date()));
var diffValue = now - dateTimeStamp;
var limitTime = days * 86400;
if(diffValue >= limitTime){
return true;
}
return false;
} //当前日期加减天数,falg:true表示只要年月日
function mathChangeDate(date,method,days,flag){
//method:'+' || '-'
//ios不解析带'-'的日期格式,要转成'/',不然Nan,切记
var dateVal = date.replace(/-/g, '/');
var timestamp = Date.parse(dateVal);
if(method == '+'){
timestamp = timestamp / 1000 + 24 * 60 * 60 * days;
} else if (method == '-'){
timestamp = timestamp / 1000 - 24 * 60 * 60 * days;
}
return toDate(timestamp,flag);
} //时间戳转换具体时间描述(传入数值型时间戳)
function getDateDiff(dateTimeStamp) {
var result = '';
var minute = 1 * 60;
var hour = minute * 60;
var day = hour * 24;
var halfamonth = day * 15;
var month = day * 30;
var now = getUnixTime(formatDateThis(new Date()));//有些特殊 不能使用 new Date()
var diffValue = now - dateTimeStamp;
if (diffValue < 0) { return; }
var monthC = diffValue / month;
var weekC = diffValue / (7 * day);
var dayC = diffValue / day;
var hourC = diffValue / hour;
var minC = diffValue / minute; if (monthC >= 1) {
result = "" + parseInt(monthC) + "月前";
}
else if (weekC >= 1) {
result = "" + parseInt(weekC) + "周前";
}
else if (dayC >= 1) {
result = "" + parseInt(dayC) + "天前";
}
else if (hourC >= 1) {
result = "" + parseInt(hourC) + "小时前";
}
else if (minC >= 1) {
result = "" + parseInt(minC) + "分钟前";
} else
result = "刚刚";
return result;
}; //获取当前年份,月份, 例: getCurrentTime(new Date(),"year")
const getCurrentTime = (date,method) => {
if(method == "year"){
return date.getFullYear();
}else if(method == "month"){
return date.getMonth() + 1;
}
return date;
} //获取当前服务器时间,参数直接用 new Date() 就可以了
const formatDateThis = date => {
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const hour = date.getHours();
const minute = date.getMinutes();
const second = date.getSeconds();
return [year, month, day].map(formatNumber).join('-') +' '+ [hour, minute, second].map(formatNumber).join(':');
} const formatTime = date => {
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
return [year, month, day].map(formatNumber).join('-');
}
const formatTimes = time => {
const hour = time.getHours();
const minute = time.getMinutes();
const second = time.getSeconds();
return [hour, minute,second].map(formatNumber).join(':');
}
//补0
const formatNumber = n => {
n = n.toString();
return n[1] ? n : '0' + n;
} //比较两个时间大小(格式参考yyyy-mm-dd hh:mm:ss)
function compareTime(startTime,endTime){
//结束时间大于开始时间就是true , 反之则为 false
var sn = getUnixTime(startTime) * 1;
var en = getUnixTime(endTime) * 1;
if(en > sn){
return true;
}
return false;
} module.exports = {
dateCompare:dateCompare,
getCurrentTime:getCurrentTime,
getUnixTime:getUnixTime,
formatDateThis:formatDateThis,
formatTime: formatTime,
formatTimes: formatTimes,
toDate: toDate,
getDateDiff: getDateDiff,
mathChangeDate: mathChangeDate,
compareTime: compareTime,
datePassDays:datePassDays
}
微信小程序日期转换、比较、加减的更多相关文章
- [转]微信小程序之购物数量加减 —— 微信小程序实战商城系列(3)
本文转自:http://blog.csdn.net/michael_ouyang/article/details/70194144 我们在购买宝贝的时候,购物的数量,经常是我们需要使用的,如下所示: ...
- 微信小程序开发动感十足的加载动画--都在这里!
代码地址如下:http://www.demodashi.com/demo/14242.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序开发——模板中加载html代码
最新方法可以使用微信小程序提供的 rich-text (富文本)组件直接写解析html,详见 rich-text: <rich-text class='f13 c_9' nodes=" ...
- 微信小程序的图片懒加载
在普通的web页面当中,我们都知道图片懒加载可以提升浏览器的加载速度.原理是图片用空或者占位图片进行显示,当屏幕移动到图片位置的时候,再把图片的地址换成它的地址.那么,在小程序当中呢,最近老大让看一下 ...
- 微信小程序----日期时间选择器(自定义精确到分秒或时段)
声明 bug:由于此篇博客是在bindcolumnchange事件中做的值的改变处理,因此会出现当你选择时,没有点击确定,直接取消返回后,会发现选择框的值依然改变.造成原因:这一点就是由于在bindc ...
- 微信小程序INC自增自减MUL自乘问题
今天使用到微信小程序云开发中的数据库自增字段问题出现了错误 Uncaught (in promise) ReferenceError: _ is not defined 官方给出的INC方法文档 db ...
- 微信小程序web-view之动态加载html页面
官方推出的web-view方便了很多开发人员. 我们在做的时候,经常会想到写一个小程序的page然后通过动态加载web-view的形式来完成其他功能页面的开发. 之前研究web-view的时候发现网上 ...
- 分享下自己写的一个微信小程序请求远程数据加载到页面的代码
1 思路整理 就是页面加载完毕的时候 请求远程接口,然后把数据赋值给页面的变量 ,然后列表循环 2 js相关代码 我是改的 onload函数 /** * 生命周期函数--监听页面加载 */ on ...
- 微信小程序实现滚动分页加载更多
参考网址:https://www.cnblogs.com/Smiled/p/8203306.html 1.wxml: <view class='myScroll' style='float:le ...
随机推荐
- Java解释单链表中的头插法以及尾插法
单链表属于数据结构中的一种基本结构,是一种线性结构,在此使用Java对其中的头插法以及尾插法进行解释. 首先定义好链表中的节点类: 其中,data代表节点所存放的数据,next代表指向下一节点 对于单 ...
- redis源码学习之slowlog
目录 背景 环境说明 redis执行命令流程 记录slowlog源码分析 制造一条slowlog slowlog分析 1.slowlog如何开启 2.slowlog数量限制 3.slowlog中的耗时 ...
- PicGo+jsDelivr+GitHub搭建免费图床,Typora使用图床
Github配置 首先,创建一个GitHub账号 然后添加一个仓库 创建完后点头像,Setting 然后点击Developer settings 然后点击Personal access tokens ...
- .NET 5 ORM 八大实用技巧 干货 - SqlSugar ORM
介绍 sqlsugar已经在第一时间完美兼容.NET5并且已经有人在使用了, 很多人都担心用了开源框架遇到问题无法解决,导致前功尽弃,使用SqlSugar你大可放心,除了有详细文档和几年的大量用户积累 ...
- 在FL Studio编曲软件中查找采样的音高
相信玩音乐的小伙伴们都遇到过这种情况,在用FL Studio编曲时,想添加一段音频采样,由于采样的调式与我们正在编曲的调式不同,音频之间的衔接就是一个非常头疼的问题,要解决采样的调式,我们就得先确认这 ...
- 模拟赛38 B. T形覆盖 大模拟
题目描述 如果玩过俄罗斯方块,应该见过如下图形: 我们称它为一个 \(T\) 形四格拼板 .其中心被标记为\(×\). 小苗画了一个 \(m\) 行 \(n\) 列的长方形网格.行从 \(0\) 至 ...
- 【PYTEST】第二章编写测试函数
知识点: assert 测试函数标记 跳过测试 标记预期失败的测试用例 1. asseet 返回的都是布尔值,等于False(F) 就是失败, assert 有很多 assert something ...
- 接上一篇:(四) 控制反转(IOC)/ 依赖注入(DI)
spring 核心功能:beans.core.context.expression Spring设计理念 Spring是面向Bean的编程 Spring三个核心组件(Core.Context.Bean ...
- Linux中进程杀掉总是自动重启
<1> cat /proc/进程id/status 找到该子进程对应的父进程,将其父进
- 对Tarjan——有向图缩点算法的理解
开始学tarjan的时候,有关无向图的割点.桥.点双边双缩点都比较容易地理解了,唯独对有向图的缩点操作不甚明了.通过对luoguP2656_采蘑菇一题的解决,大致搞清了tarjan算法的正确性. 首先 ...