iOS 日期格式化出现NaN

问题描述

最近在使用uniapp开发App时,需要将后端发过来的 格式为 “yyyy-MM-dd HH:mm:ss"的格式转化为 “yyyy-MM-dd”,在Android平台并无任何问题,但是在iOS上出现了NaN的问题,效果如下图所示
iOS 图片Nan的问题呢
起初我以为是 uniapp的bug,但是查询相关资料发现是 iOS上的WebView的问题,iOS的Date不识别 “-”,所以解决思路就是 在 new Date(sz)之前,将字符串所有的“-”替换为”/",具体的代码

/**
 * @description 简述:时间格式
 * @param date: 时间 eg:new Date()
 * @param fmt:格式  eg:yyyy-MM-dd HH:mm:ss  yyyy-MM-dd
 * @return String
 * @example timeFormat(new Date(), "yyyy-MM-dd HH:mm:ss") or timeFormat("2022-02-13", "yyyy-MM-dd HH:mm:ss")
 * */
export function timeFormat(date, fmt = "yyyy-MM-dd") { 
	if (date == null || date == '' || date == undefined)
		return "";
	if(typeof(date) == "string") {
		// 判断系统平台属于哪个平台,如果是其它开发前端框架,则需要调整这行代码
		if (uni.getSystemInfoSync().platform == 'ios') {
			// 解决ios手机时间格式化NaN问题
			date = date.replace(/-/g,'/')
		}
		date = new Date(date)
	}
	else if (!(date instanceof Date)) {
		date = new Date(date)
	}
	var o = {
	"M+": date.getMonth() + 1, //月份 
	"d+": date.getDate(), //日 
	"H+": date.getHours(), //小时 
	"m+": date.getMinutes(), //分
	"s+": date.getSeconds(), //秒 
	"q+": Math.floor((date.getMonth() + 3) / 3), //季度 
	"S": date.getMilliseconds() //毫秒 
	};
	if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
	for (var k in o)
		if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
	return fmt;
}

如何调用

timeFormat(new Date(), "yyyy-MM-dd HH:mm:ss")
timeFormat("2022-02-13", "yyyy-MM-dd HH:mm:ss")

最后结果

最后效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
iOS移动端,时间格式为yyyy-MM-dd时计算其毫秒值会返回NaN的问题可以通过将时间格式转为yyyy/MM/dd来解决。具体做法是使用.replace()函数将日期字符串中的"-"替换为"/",然后再将转换后的日期字符串通过new Date()获取其毫秒值。例如,可以将日期字符串'2021-05-20 18:00:00'转换为'2021/05/20 18:00:00',然后再使用new Date('2021/05/20 18:00:00').getTime()来获取其毫秒值。 另外,还有一种解决方法是将日期格式设置为format="yyyy/MM/dd HH:mm:ss",避免使用format="yyyy-MM-dd HH:mm:ss"的格式,因为在iOS上使用后者的格式会导致返回NaN的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决IOS移动端 格式为yyyy-MM-dd时计算其毫秒值会返回NaN](https://blog.csdn.net/qq_44806249/article/details/124802374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【IOS时间格式 NaN 问题解决](https://blog.csdn.net/weixin_43900414/article/details/130523881)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [java后台解析苹果的P12安装证书类封装](https://download.csdn.net/download/qq_42684707/88279835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值