微信小程序-IOS时间戳坑解决方法

本文介绍了一种将特定格式的日期字符串(如2017-08-0810:30:40)转换为兼容iOS、安卓及PC等所有平台的时间戳的方法。通过使用JavaScript中的Date对象并正确地解析日期字符串,可以确保得到的时间戳在全球范围内正确无误。

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

后台传给我的时间是"2017-08-08 10:30:40"


计算时间戳的话 Date.parse("2017-08-08 10:30:40")

安卓端和PC是可以完美显示的,

但是IOS这个妖艳*货,是国际时间不是中国时间

很多网上的方法都是让大家用正则把所有 “-”换成“/”,

别试了 还是不行的。。

所以博主经过一轮小波折

想出了个完美兼容所有平台的时间戳


var arr = dateStr.split(/[- :]/);
let nndate = new Date(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], arr[5]);
nndate=Date.parse(nndate)

得出的nndate是可以完全兼容所有平台时间的,

这时候大家就可以尽情的获取后台给的时间了


其实后台直接给个时间戳不就完了吗。。妈蛋。


<think>我们参考用户提供的引用内容,用户提到了两种获取时间戳方法:1.使用`newDate('2018-09-0315:46:13').getTime()`来获取时间戳。2.在示例中,用户还提到了通过`formatTime`函数来格式化时间,但注意这个函数可能是自定义的,用于将时间戳格式化为日期字符串。然而,用户现在需要的是将时间转换为时间戳,即给定一个时间字符串(如“2018-09-0315:46:13”),要得到对应的时间戳(毫秒数)。在微信小程序中,JavaScript的运行环境与浏览器中类似,因此可以使用JavaScript的Date对象来处理日期和时间。步骤:1.创建一个Date对象,传入时间字符串。2.调用Date对象的`getTime()`方法获取时间戳(从1970年1月1日00:00:00UTC到该日期对象所表示时间的毫秒数)。注意:时间字符串的格式需要正确,否则可能导致解析错误。常见的格式如“YYYY-MM-DDHH:mm:ss”。示例代码:```javascript//假设有一个时间字符串vartimeString="2018-09-0315:46:13";//创建Date对象vardate=newDate(timeString);//获取时间戳,单位为毫秒vartimestamp=date.getTime();console.log(timestamp);//输出:1535967973000//如果时间字符串是其他格式,可能解析失败,返回NaN,此时可以考虑自己解析字符串,然后使用newDate(year,monthIndex,day,hour,minute,second)来构造。//注意:月份从0开始,所以1代表二月,0代表一月,所以需要将实际月份减1。//例如:解析"2018-09-03"->年:2018,月:9-1=8,日:3//示例:手动解析varparts=timeString.split(/[-:]/);varyear=parseInt(parts[0]);varmonth=parseInt(parts[1])-1;//月份从0开始varday=parseInt(parts[2]);varhour=parseInt(parts[3]);varminute=parseInt(parts[4]);varsecond=parseInt(parts[5]);vardate2=newDate(year,month,day,hour,minute,second);vartimestamp2=date2.getTime();console.log(timestamp2);//同样输出:1535967973000```但是,由于不同平台对日期字符串的解析可能有差异,推荐使用手动解析字符串然后构造Date对象的方式,以避免兼容性问题。另外,用户引用中提到了一个`formatTime`函数,但注意这个函数是将时间戳转换成格式化字符串,与当前需求相反。因此,我们给出两种方法方法一:使用Date对象直接解析字符串(简单,但需注意兼容性)方法二:手动解析字符串,然后构造Date对象(更可靠)在微信小程序中,我们可以根据时间字符串的来源选择合适的方法。如果时间字符串是来自后台且格式固定,并且已知在iOS和Android上都能正确解析,那么使用第一种方法。否则,建议使用第二种方法。另外,如果用户需要转换当前时间,则可以直接使用`Date.now()`来获取当前时间时间戳。示例:获取当前时间时间戳```javascriptvarcurrentTimestamp=Date.now();//单位毫秒console.log(currentTimestamp);```总结用户问题:用户想在微信小程序中将一个时间字符串转换为时间戳。我们提供了两种方法,并提醒了兼容性问题。最后,我们按照要求生成相关问题。</think> ### 微信小程序时间时间戳方法与示例 在微信小程序中,将时间转换为时间戳可以通过以下两种主要方法实现: #### 方法一:使用 JavaScript Date 对象的原生方法 ```javascript // 时间字符串转时间戳(毫秒级) const timeString = '2023-08-15 14:30:00'; const timestamp = new Date(timeString).getTime(); // 获取当前时间戳 const currentTimestamp = new Date().getTime(); ``` **说明**: 1. `new Date()` 支持多种时间格式字符串: - `'2023-08-15'` - `'2023-08-15 14:30'` - `'2023/08/15 14:30:00'` 2. `getTime()` 返回毫秒级时间戳 3. 完整示例: ```javascript Page({ convertTime() { const timeStr = '2023-08-15 14:30:00'; const timestamp = new Date(timeStr).getTime(); console.log(timestamp); // 输出:1692081000000 } }) ``` #### 方法二:使用微信小程序 util 模块(需要转换时间格式时) ```javascript const util = require('../../utils/util.js'); Page({ convertTime() { const timeStr = '2023/08/15 14:30:00'; const formattedTime = util.formatTime(new Date(timeStr)); const timestamp = new Date(formattedTime).getTime(); this.setData({ timestamp }); } }) ``` **utils/util.js 示例**: ```javascript function formatTime(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(':') } function formatNumber(n) { n = n.toString() return n[1] ? n : '0' + n } module.exports = { formatTime: formatTime } ``` #### 注意事项: 1. **时间格式兼容性**:iOS 系统仅支持 `yyyy/MM/dd HH:mm:ss` 格式,Android 支持多种格式,建议统一使用 `/` 分隔符[^1][^2] 2. **时间戳单位**: - `getTime()` 返回毫秒级时间戳(13位数字) - 秒级时间戳需除以1000:`Math.floor(new Date().getTime()/1000)` 3. **时区处理**:所有时间转换均基于客户端系统时区 > **最佳实践**:对于用户输入的时间,建议先用 `util.formatTime()` 统一格式化后再转换,避免平台差异问题[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值