微信小程序 随机字符串产生函数 时间戳产生函数

本文介绍了两种实用的JavaScript函数:一种用于生成随机字符串(nonce),另一种用于获取当前时间的时间戳。通过具体代码示例展示了如何实现这两个功能。

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

 随机函数的产生:

createNonceStr: function () {
              return Math.random().toString(36).substr(2, 15)
            },

时间戳产生的函数:


createTimeStamp: function () {
              return parseInt(new Date().getTime() / 1000) + ''
            },

<think>我们参考上述引用内容,特别是引用[3]和[4]中关于微信小程序时间戳转换的方法。 在微信小程序中,我们可以使用WXS(WeiXin Script)脚本在WXML中直接进行时间戳到日期字符串的转换,也可以在JS中使用函数转换。 根据引用[3]和[4]的示例,我们可以采用两种方式: 1. 在WXML中使用WXS脚本进行转换(适合在视图层直接格式化显示) 2. 在JS中定义转换函数,然后在数据绑定之前转换(适合在逻辑层处理数据) 用户的问题是将时间戳转换为可读的时间字符串,我们分别给出两种方法。 注意:时间戳可能是10位(秒级)或13位(毫秒级)。在转换时需要注意,如果是10位,需要乘以1000转换为毫秒级(因为JavaScript的Date对象是基于毫秒的)。 方法一:使用WXS在WXML中转换(推荐用于显示) 步骤: (1) 在WXML文件中,使用<wxs>标签定义转换函数,或者将转换函数写在单独的.wxs文件中然后引入。 (2) 在WXML中调用该函数。 方法二:在JS中转换,然后通过setData设置数据(如果数据需要在JS中处理) 步骤: (1) 在JS中定义一个转换函数。 (2) 在获取时间戳后,调用该函数转换,然后将转换后的字符串通过setData设置到数据中。 下面分别给出示例: 方法一示例(直接在WXML中使用WXS): 假设我们的时间戳数据在Page的data中为timestamp,我们可以在WXML中这样写: 首先,我们可以在WXML文件中内联WXS代码: ```wxml <!-- 内联WXS --> <wxs module="formatTime"> function format(timestamp) { // 判断时间戳位数,10位则乘以1000 if (timestamp.toString().length === 10) { timestamp = timestamp * 1000; } var date = getDate(parseInt(timestamp)); 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(); // 格式化,补零 function pad(n) { return n < 10 ? '0' + n : n; } return year + '-' + pad(month) + '-' + pad(day) + ' ' + pad(hour) + ':' + pad(minute) + ':' + pad(second); } module.exports.format = format; </wxs> <view>原始时间戳:{{timestamp}}</view> <view>格式化时间:{{formatTime.format(timestamp)}}</view> ``` 或者,我们也可以将WXS代码放在单独的.wxs文件中,例如format.wxs: ```wxs // format.wxs function format(timestamp) { if (timestamp.toString().length === 10) { timestamp = timestamp * 1000; } var date = getDate(parseInt(timestamp)); 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(); function pad(n) { return n < 10 ? '0' + n : n; } return year + '-' + pad(month) + '-' + pad(day) + ' ' + pad(hour) + ':' + pad(minute) + ':' + pad(second); } module.exports = { format: format }; ``` 然后在WXML中引入: ```wxml <wxs src="../../utils/format.wxs" module="formatTime" /> <view>格式化时间:{{formatTime.format(timestamp)}}</view> ``` 方法二示例(在JS中转换): 在JS文件中,我们可以定义一个转换函数,然后在需要的地方调用,将转换后的字符串设置到data中。 ```javascript // 在JS文件中定义转换函数 function formatTime(timestamp) { // 如果时间戳是10位,需要乘以1000 if (timestamp.toString().length === 10) { timestamp = timestamp * 1000; } var date = new Date(parseInt(timestamp)); 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(); function pad(n) { return n < 10 ? '0' + n : n; } return year + '-' + pad(month) + '-' + pad(day) + ' ' + pad(hour) + ':' + pad(minute) + ':' + pad(second); } Page({ data: { timeStr: '' // 用于显示时间的字符串 }, onLoad: function() { var timestamp = 1604995706; // 10位时间戳示例 // 调用转换函数 var timeStr = formatTime(timestamp); this.setData({ timeStr: timeStr }); } }); ``` 在WXML中直接使用: ```wxml <view>{{timeStr}}</view> ``` 注意:在微信小程序中,WXS中的getDate函数等同于JS中的new Date,但WXS中不能使用new Date(),只能使用getDate()。 以上两种方法都可以实现时间戳到日期字符串的转换。方法一更适用于直接在视图层转换,减少逻辑层与视图层的数据传输;方法二则更灵活,可以在JS中处理数据。 根据用户需求,我们提供了两种解决方案,用户可以根据实际场景选择。 相关问题: 1. 微信小程序中如何将日期字符串转换为时间戳? 2. 微信小程序的WXS脚本有哪些限制? 3. 如何处理不同时区的时间戳转换问题?</think>### 微信小程序时间戳字符串时间详解 在微信小程序中,时间戳转换为可读时间字符串可通过以下两种主要方式实现: #### 方法一:使用 WXS 脚本(推荐) 在 WXML 中直接进行格式化处理,无需修改 JS 逻辑: ```wxml <wxs module="timeUtils"> function format(ts) { // 处理10位/13位时间戳 var timestamp = ts.toString().length === 10 ? ts * 1000 : ts; var date = getDate(parseInt(timestamp)); // 补零函数 var pad = function(n) { return n < 10 ? '0' + n : n; }; return date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate()) + ' ' + pad(date.getHours()) + ':' + pad(date.getMinutes()) + ':' + pad(date.getSeconds()); } module.exports.format = format; </wxs> <!-- 使用示例 --> <view>原始时间戳:{{timestamp}}</view> <view>格式化时间:{{timeUtils.format(timestamp)}}</view> ``` **优点**:视图层直接处理,减少数据传输,提升性能[^3]。 #### 方法二:JS 工具函数 创建 `utils/util.js` 工具文件: ```javascript // util.js function formatTime(timestamp, format = 'Y-M-D h:m:s') { if (timestamp.toString().length === 10) timestamp *= 1000; const date = new Date(timestamp); const map = { 'Y': date.getFullYear(), 'M': date.getMonth() + 1, 'D': date.getDate(), 'h': date.getHours(), 'm': date.getMinutes(), 's': date.getSeconds() }; return format.replace(/Y|M|D|h|m|s/g, key => map[key].toString().padStart(2, '0') ); } module.exports = { formatTime }; ``` 在页面 JS 中使用: ```javascript // page.js const { formatTime } = require('../../utils/util'); Page({ data: { timeStr: '' }, onLoad() { const timestamp = 1604995706; // 10位时间戳 this.setData({ timeStr: formatTime(timestamp, 'Y年M月D日 h时m分') }); } }); ``` **输出结果**:`2020-11-10 12:08:26`(默认格式)或 `2020年11月10日 12时08分`(自定义格式)[^4][^5]。 #### 注意事项 1. **时间戳位数**:10位时间戳(秒级)需乘以1000转换为毫秒级 2. **时区处理**:`new Date()` 会自动使用设备本地时区 3. **性能优化**:频繁更新时推荐使用 WXS 方案[^3] 4. **日期对象**:WXS 中需使用 `getDate()` 而非 `new Date()`[^3] > 时间戳本质是格林威治时间1970年01月01日00:00:00起至现在的总秒数(北京时间需+8小时)[^2]。 --- ### 相关问题 1. 微信小程序中如何将日期字符串转换为时间戳? 2. WXS 脚本与 JavaScript 在处理日期时有哪些核心区别? 3. 如何实现微信小程序中的多语言时间格式化? 4. 处理跨时区时间戳有哪些最佳实践? 5. 微信小程序中如何实现相对时间显示(如“3分钟前”)? [^1]: vue js 时间戳转日期互转,uniapp 微信小程序 时间戳和日期格式相互转换 [^2]: 微信小程序中的时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数 [^3]: 微信小程序设置过滤器将时间戳转化为时间字符串 [^4]: 微信小程序时间戳转换日期格式 [^5]: 微信小程序 时间戳转换成 时间格式
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冉然

你的鼓励对我很重要

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

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

打赏作者

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

抵扣说明:

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

余额充值