微信小程序云开发自定义自己想要的格式日期

前言

在使用微信云开发的时候,经常会使用到生成日期,但是微信官方给的自动生成日期的函数经常会无法满足我们开发真正喜欢的格式,不对,是客户喜欢的格式。经常在csdn上复制别人的代码,今天我也分享一小段给大家用用哈,假装回礼了哈哈哈哈
这也是一次偶然的深夜加班调试微信支付接口,突然发现的订单日期不对,以前我太随意了直接加8小时[/捂脸]
以下这张图是我的错误示例
在这里插入图片描述
同时也欢迎大家对我开发的电商微信小程序系统“百熟优质果"提出宝贵意见,我们是以优质水果起家的,搭建这个系统为了方便宣传与购买,能捧场的弟兄还望帮忙捧个财场,不行人场也行,但是别让我冷场了哈哈哈哈哈

使用微信官方的日期方法的返回内容

//var nowDate =new Date().getTime()  //获取当前时间戳 也可以用 Date.now()
var curDate = new Date()  
//云函数中使用返回 相应的与中国差8小时的时区日期 2020-03-02T01:44:36.552Z

以上日期以为 Date() 返回就是这样了嘛?本来我也以为返回结果就固定死了,都用了正则表达式处理了下字符准备使用了,后来我错了。使用了参数传入之后…
成了下边这样

var date =  new Date(Date.now() + 8 * 60 * 60 * 1000)  
//返回结果是   Mon Mar 02 2020 02:58:10 GM +0000 (UTC)

迫不得已,只好自力更生了

编写生成自定义日期云函数方法


/** 工具2.1
 * 处理当前日期时间函数 获取主要是 new Date().getTime() 获取 云函数系统时间对应的时间戳 也可用Date.now()
 * 返回:相应时间戳对应的日期,并按照一定格式拼凑 2020-03-02 01:38:01
 */
async function formatTime() {
  // var nowDate = new Date().getTime()
  //由于服务器时间直接转化无法变成我们中国时区想要的时间,还需要再增加8小时的毫秒数。小程序端可以不用增加
  //由 new Date()函数方法将时间戳对应的日期返还给变量 并将变量使用相应的方法获取各个日期单位的值
  var date =  new Date(Date.now() + 8 * 60 * 60 * 1000)  //Mon Mar 02 2020 02:58:10 GM +0000 (UTC)
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()
  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()
  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
/**工具函数2.2
 * //将时分秒转化成二位数格式 2020
 */
function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n   //第二位存在的时候,说明不用转化
}

在其他进行引用的时候,最好放在同步函数里面进行等待返回,否则异步执行怕会空变量拿到其他地方使用报错。
引用示例:

构造明文下单日期 
let time = await formatTime() //调用工具函数 生成日期

经常使用的地方就是生成订单日期,或者记录操作者做某些操作的时间要用了。将工具函数复制直接调用就可以使用了。

小程序端生成日期方法

注意事项:由于获取的是本地系统时间对应的中国标准时间,所以要注意客户调整本地时间对系统判断的影响。这个影响例子,我给大家举例:微信阅读的无限卡昨天刚到期,今天没得免费阅读了,怎么办?当然是调整手机时间到昨天的日期,是不是惊奇的发现又可以了?哈哈哈哈,所以大家使用这个函数的时候要注意到这个点啊。
另外大家一会儿在阅读程序的过程中,会发现小程序端使用new Date() 函数直接获取就能拿到中国时区的标准时间,而云函数中这样操作,会相差8小时的时间。所以我们在云函数中要加8小时的毫秒数,而小程序端却不用。

/**
 * 处理当前日期时间函数 获取主要是 new Date() 函数获取 本地系统时间对应的日期
 * 注意:不要用生成的订单日期 来进行活动群体享受相应的规则划分,他们调整手机或电脑时间将会出错
 * 参数:传入标准时间日期的格式 未传入默认为当前的日期格式
 * 返回:相应时间戳对应的日期,并按照一定格式拼凑 2020-03-02 01:38:01
 */
function formatTime(date) {
//在小程序端,new Date() 的返回值是 Mon Mar 02 2020 20:33:42 GMT+0800 (中国标准时间)
//由于返回的就是中国标准时间,所以我们不再需要添加时间毫秒数间隔进行转化,直接使用即可
  date = date || new Date()
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

/**
 * //将时分秒转化成二位数格式 2020
 */
function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n   //第二位存在的时候,说明不用转化
}

总结

使用日期是每个系统都会要用到的,而日期真正要显示给的群体是客户,我们开发用时间戳也可以。所以,有的时候为了提高用户体验度我们可以编写一些工具函数,一次写好多次调用即可。云函数中最好不要把工具函数写在一个云函数里面调用,访问起来格式还挺长的,感觉很臃肿,看各位自己的喜欢了,哈哈哈哈

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白天到处飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值