浅谈js的date对象对时间字符串的解析
时间:2022-06-06
本文章向大家介绍浅谈js的date对象对时间字符串的解析,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
遇见问题
最近的时间都在开发社团内部的应用–隧道口,虽然只有简单的几个页面,但是依然是遇到了不少坑。 其中 date 的时间处理就是一个。
简单说一下需求。。现在在做一个活动列表,后台传一个json,里面包含活动的列表数组。 我遍历数组并创建对应的视图显示,并且以月份作为分类标准。 展示一下后台拿来的数据
做起来并不难,我开始写了如下版本
data.forEach(function (value, index) {
var ct = new Date();
var st = new Date(value.activity_start_time);//活动开始时间
var et = new Date(value.activity_end_time);//活动结束时间
var sm = st.getMonth() + 1; //月份
var sd = st.getDate();
sd = sd < 9 ? '0' + sd: sd; //日
var sh = st.getHours();
sh = sh < 9 ? '0' + sh: sh; //时
var sn = st.getMinutes();
sn = sn < 9 ? '0' + sn: sn; //分
//...省略
var params = {
id: value.id,
poster: value.activity_pic_url,
title: value.activity_name,
association: value.association_name,
location: value.activity_location,
like: value.like,
comment: value.comment,
status: status,
sclass: sclass,
day: sd,
clock: sh + ':' + sn
};
//渲染
tpl += Mustache.render(self.item_tlp, params);
tpl += '</div>';
});
当然,这段代码成功运行了,至少我觉得成功运行了。
很完美的成功了。
可是在ios下运行的结果就很不理想了
全是 NAN 有没有。 一开始以为是 数字与字符串相加造成的问题(尽管js是可以数字与字符串相加的) 用parseInt改了一遍发现不行,后台调试发现在ios下显示 Invalid Date,看来是不同平台的Date对字符串的解析能力不同啊。
解决问题
之后我在ie上测试发现了同样的问题(想不到ios和ie居然有同样坑的一天)。
查阅资料发现了问题所在,new Date(str) 对传进入的字符串有一定的格式要求,不同平台不一样,像我们后台传过来的时间格式是
20xx-xx-xx 00:00:00
new Date("20xx-xx-xx 00:00:00")
这种格式在人看来是很容易理解了,然后,部分浏览器却解析不了,而所有浏览器都能解析的格式是
new Date("20xx/xx/xx 00:00:00")
于是对后台传过来的数据修改成 year/month/day
的格式
var st = new Date(Date.parse(value.activity_start_time.replace(/-/g,"/")));
var et = new Date(Date.parse(value.activity_end_time.replace(/-/g,"/")));
大功告成。
##
总之呢,以后解析时间用 year/month/day
就好
- 通过shell检查分区表中是否含有默认分区(r2笔记87天)
- 利用python爬取人人贷网的数据
- 通过shell脚本查看package的信息(r2笔记86天)
- 通过shell脚本查看procedure的信息(r2笔记85天)
- 支持中文文本数据挖掘的开源项目PyMining
- 通过分区键值发现性能问题(r2笔记84天)
- linux乱码和数据库乱码的问题简单排查(r2笔记83天)
- 一条运行了3天的"简单"的sql(r2笔记82天)
- 海量数据迁移之使用shell启用多个动态并行(r2笔记81天)
- 使用shell测试历史数据样本(r2笔记80天)
- 【专业技术】编译器的工作原理
- ORA-17500 ODM err的问题排查(r2笔记78天)
- 【专业技术】linux启动流程剖析
- 使用dbms_metadata生成建表语句(r2笔记97天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 实战开发,使用 Spring Session 与 Spring security 完成网站登录改造!!
- 分布式计算框架Gearman原理详解
- 【从0开始の全记录】Flume+Kafka+Spark+Spring Boot 统计网页访问量项目
- 系统级性能分析工具perf的介绍与使用[转]
- 深入理解排序算法
- 用nginx缓存静态文件
- 优雅的玩PHP多进程
- 聊一聊mycat数据库集群系列之双主双重实现
- Fast-SCNN的解释以及使用Tensorflow 2.0的实现
- 基于Spring Boot快速实现发送邮件功能
- 史上最全的vim快捷键文档/手册/大全/帮助/指南
- RPC详解
- 轻松学Pytorch – 行人检测Mask-RCNN模型训练与使用
- Linux的文本处理工具浅谈-awk sed grep
- 这样Review代码牛逼啦!