微信小程序日期转换、比较、加减
直接上干货:
在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 ...
随机推荐
- 如何避免Cephfs被完全毁掉
前提 一套系统的最低要求是可恢复,也就是数据不丢失,但是在各种各样的原因下,整套系统都有被毁掉的可能,一直以来有个观点就是存储是需要两套的,一般情况下很难实现,但是如何把故障发生的概率降低到最低,这个 ...
- 头秃了,Spring Boot 自动配置了解一波~
持续原创输出,点击上方蓝字关注我 目录 前言 源码版本 @SpringBootApplication干了什么? @EnableAutoConfiguration干了什么? 总结 前言 为什么Sprin ...
- Django实战总结 - 快速开发一个数据库查询工具
一.简介 Django 是一个开放源代码的 Web 应用框架,由 Python 写成. Django 只要很少的代码就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 ...
- phpstorm 远程调式 php
https://cloud.tencent.com/developer/article/1561767 超时设置 fastcgi: ``` 1. apache module的情况下: 修改配置文件 h ...
- 移动端调试Web页面
移动端调试Web页面 虽然可以在PC下,通过开发者工具,模拟移动端,但是这样只能模拟页面样式,对于代码的执行情况是无法模拟的,所以在此结合实际调试经验,针对安卓与IOS设备,进行总结. IOS 安卓 ...
- Camtasia中对录制视频进行编辑——旁白
相信很多人都遇见过想要录制视频,但是不知道在电脑上用哪一款软件比较好,害怕自己录的视频导出来之后会有水印,或者在录制的过程中遇到麻烦,更或者下载一款带有病毒的软件.那么今天我便给大家推荐一款专业录制屏 ...
- Java基础教程——转换流
转换流 通常,Window默认的编码方式是GBK,Java项目一般建议设为UTF-8编码.这时候读取文件可能出现乱码.事实上实际应用中编码格式不匹配的场景非常多. 转换流可以指定编码方式,用于解决乱码 ...
- Leetcode第 217 场周赛(思维量比较大)
Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...
- 《Machine Learning in Action》—— 白话贝叶斯,“恰瓜群众”应该恰好瓜还是恰坏瓜
<Machine Learning in Action>-- 白话贝叶斯,"恰瓜群众"应该恰好瓜还是恰坏瓜 概率论,可以说是在机器学习当中扮演了一个非常重要的角色了.T ...
- python之切片操作,实现一个trim()函数,去除字符串首尾的空格.
# -*- coding: utf-8 -*- def trim(s): if len(s)==0: return '' if s[:1]==' ': return trim(s[1:]) elif ...