h5页面在微信中获取时间戳失败

博主实现根据传入日期查询当月数据功能时,发现h5页面在微信和浏览器中执行结果不同。微信里getTime()返回NaN,因月份未补0致转换失败。总结指出'2023-4-1'等格式在微信和浏览器中转换结果有差异,应格式化字符串为'2023-04-01'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写了一个根据传入日期查询日期对应的当月数据的功能:

const getDate = () => {
    const date = '2023-04-01';
    const year = new Date(date).getFullYear();
    const month = new Date(date).getMonth();
    const maxDate = new Date(month === 11 ? `${year + 1}-01-01` : `${year}-${month + 2}-01`);
    const minDate = new Date(`${year}-${month + 1}-01`);
    console.log('minDate', minDate, minDate.getTime());
    console.log('maxDate', maxDate, maxDate.getTime());
}
getDate()

问题:

        h5页面在微信中打开与在浏览器上打开执行结果不一致

原因:微信中getTime()返回NaN,没有成功转换成时间戳,比较数据格式发现月份没有补0,导致转换失败

正确示例:

const getDate = () => {
    const date = '2023-04-01';
    const year = new Date(date).getFullYear();
    const month = new Date(date).getMonth();
    const maxDate = new Date(month === 11 ? `${year + 1}-01-01` : `${year}-${(month + 2 + '').padStart(2, '0')}-01`);
    const minDate = new Date(`${year}-${(month + 1 + '').padStart(2, '0')}-01`);
    console.log('minDate', minDate, minDate.getTime());
    console.log('maxDate', maxDate, maxDate.getTime());
}
getDate()

总结:字符串转时间戳时,'2023-04-01'和'2023-4-1'在微信中不能正确转换,即使在浏览器中转换结果也不一致,直接格式化字符串为'2023-04-01'

要在H5页面中实现唤起微信小程序支付,你需要通过微信提供的JS-SDK来完成。以下是步骤: 1. **引入JS-SDK**: 首先,在HTML文件中引入微信的`wx.min.js`库,确保你的H5页面运行在支持微信公众号或小程序环境。 ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.7.0.js" async></script> ``` 2. **配置微信AppID**: 在你的H5项目中,需要有微信小程序对应的AppID,并在`jsconfig.json`文件中配置好: ```json { "debug": false, " appId": "your_app_id", "timestamp": "", "nonceStr": "", "signature": "", "jsApiList": [ "checkJsApi", "onMenuShareTimeline", "onMenuShareAppMessage" ] } ``` 3. **初始化JS-SDK**: 在H5页面加载完成后,调用`wx.config()`函数配置支付所需的参数: ```javascript function initWechatPay() { var config = { debug: false, // 开启调试模式 appId: 'your_app_id', timestamp: getTimestamp(), // 时间戳 nonceStr: generateNonceStr(), // 随机字符串 signature: getSignature(), // 签名 jsApiList: ['wx.requestPayment'] // 要使用的API列表 }; wx.config(config); } // 获取时间戳、随机字符串和签名生成函数省略... ``` 4. **发起支付请求**: 当用户确认支付时,调用`wx.requestPayment()`方法,传入支付详情: ```javascript function payOrder(orderInfo) { if (!wx.ready) { wx.ready(function () { wx.requestPayment({ // 支付信息 title: '订单标题', desc: '订单描述', total_fee: orderInfo.totalFee, // 总金额(单位:分) detail: '商品详情', success: function (res) { console.log('支付成功', res); // 处理支付成功的回调 }, fail: function (err) { console.log('支付失败', err); // 处理支付失败的回调 } }); }); } else { wx.requestPayment(...); // 如果已经ready,直接发起请求 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值