之前写到过,js中new Date()能接受的字符串格式,各个浏览器不一样,这次写了个关于时间对象和字符串之间的转化的方法
时间对象转化为字符串
function formatDate (date, format) { var convert, res = ''; convert = { 'y': function (str) { return (date.getFullYear() + '').slice(-(str.length < 4 ? 2 : str.length)); }, 'M': function (str) { var length, m, month, monthName; length = str.length < 6 ? str.length : 6; month = date.getMonth() + 1; monthName = [ ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] ]; if (length === 1) { m = month; } else if (length === 2) { m = ('0' + month).slice(-2); } else { m = monthName[length - 3][month - 1]; } return m; }, 'd': function (str) { var d = date.getDay(); return str.length === 1 ? d : ('0' + d).slice(-2); }, 'H': function (str) { //24小时制 var h = date.getHours(); res = ''; return str.length === 1 ? h : ('0' + h).slice(-2); }, 'h': function (str) { //12小时制 var h; h = date.getHours(); res = ' AM'; if (h > 12) { h = h - 12; res = ' PM'; } return str.length === 1 ? h : ('0' + h).slice(-2); }, 'm': function (str) { var m = date.getMinutes(); return str.length === 1 ? m : ('0' + m).slice(-2); }, 's': function (str) { var s = date.getSeconds(); return str.length === 1 ? s : ('0' + s).slice(-2); }, 'S': function (str) { var s = date.getMilliseconds(); return str.length === 1 ? s : ('00' + s).slice(-3); }, 'D': function (str) { var d, name, length; name = [ ['Sun', 'Mon','Tue','Wed','Thu','Fri','Sat'], ['Sunday', 'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'], ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], ['周日','周一','周二','周三','周四','周五','周六'] ]; d = date.getDay(); length = str.length < 4 ? str.length : 4; return name[length - 1][d]; } } return format.replace(/y+|M+|d+|H+|h+|m+|s+|S+|D+/g, function (str) { return convert[str.charAt(0)](str); }) + res; }
符号解释
y : 年份 yy两位数 yyyy四位数
M : 月份 M 数字无前置的0,MM有前置0,MMM英文缩写,MMMM英文完整写法,MMMMM中文如十二月 ,MMMMMM 数字+月 如 6月 无前置0
d : 日 d无前置0,dd有前置0
H : 24小时制 H无前置0,HH有前置0
h : 12小时制 h无前置0,hh有前置0 (会在结果字符串末尾加上AM或者PM)
m : 分钟 m无前置0,mm有前置0
s : 秒数 s无前置0,ss有前置0
S : 毫秒数 S无前置0,SSS有前置0(SS也一样)
D : 星期 D英文缩写,DD英文完整写法,DDD中文如星期三,DDDD中文如周三
如 formatDate(new Date(), 'dd-MMM-yyyy HH:mm:ss SSS')
字符串转为时间对象
function parseDate (str, format) { var type, convert, year = 1970, month = 1, day = 1, hour = 0, minute = 0, second = 0, milli = 0, date; convert = { 'y': function () { format = format.replace(/y+/, function (match) { var length; length = match.length; year = str.substring(0, length); str = str.replace(year, ''); year = Number(year); return ''; }); return year; }, 'M': function () { month = undefined; format = format.replace(/M+/, function (match) { var length, single, tens, monthName; length = match.length; monthName = 'JAN1FEB2MAR3APR4MAY5JUN6JUL7AUG8SEP9OCT10NOV11DEC12一1二2三3四4五5六6七7八8九9十10十一11十二12'; if (length < 3) { str = str.replace(/^\d{1,2}/, function (num) { month = Number(num); return ''; }); } else if (length < 6) { var name, reg; name = str.match(/\D+/)[0]; reg = new RegExp(name.substring(0,3).replace('月', '').toUpperCase() + '(\\d+)'); month = Number(monthName.match(reg)[1]); str = str.replace(name, ''); } else { var match; match = str.match(/(\d+)月/); month = Number(match[1]); str = str.replace(match[0], ''); } return ''; }); return month; }, 'd': function () { day = undefined; format = format.replace(/d+/, function () { str = str.replace(/^\d{1,2}/, function (match) { day = Number(match); return ''; }); return ''; }); return day; }, 'h': function () { var apm; hour = undefined; format = format.replace(/h+/, function () { str = str.replace(/^\d{1,2}/, function (match) { hour = Number(match); return ''; }); return ''; }); apm = str.match(/AM|PM/i)[0]; if (apm && apm.toUpperCase() === 'PM') { hour += 12; } str = str.replace(/AM|PM/ig, ''); return hour; }, 'H': function () { hour = undefined; format = format.replace(/H+/, function () { str = str.replace(/^\d{1,2}/, function (match) { hour = Number(match); return ''; }); return ''; }); return hour; }, 'm': function () { minute = undefined; format = format.replace(/m+/, function () { str = str.replace(/^\d{1,2}/, function (match) { minute = Number(match); return ''; }); return ''; }); return minute; }, 's': function () { second = undefined; format = format.replace(/s+/, function () { str = str.replace(/^\d{1,2}/, function (match) { second = Number(match); return ''; }); return ''; }); return second; }, 'S': function () { milli = undefined; format = format.replace(/S+/, function () { str = str.replace(/^\d{1,2}/, function (match) { milli = Number(match); return ''; }); return ''; }); return milli; } }; format = format.replace(/^[^a-zA-Z]+/, ''); str = str.replace(/^[^a-zA-Z0-9一二三四五六七八九十]+/, ''); while(type = format.charAt(0)) { if (convert[type] && convert[type]() !== undefined) { format = format.replace(/^[^a-zA-Z]+/, ''); str = str.replace(/^[^a-zA-Z0-9一二三四五六七八九十]+/, ''); } else { date = new Date('Invalid Date'); break; } } date || (date = new Date(year, month - 1, day, hour, minute, second, milli)); return date; }
符号的意义是一样的,只是这里没有D(星期的符号),要注意的是这里不要传没有分割符无前置0的字符串如 parseDate('2012112', 'yyyyMd') 这样没法判断是2012-11-2还是2012-1-12,为结果正确请传入有分割符的字符串如 ‘2012/11/26’ 或者 ‘2012-Aug-19’……
如发现有转化不正确的,请指正
相关推荐
2. **字符串与JSON对象之间的转化**:JavaScript提供了两个内置函数来实现这种转化:`JSON.stringify()`用于将JavaScript对象转换为JSON字符串,`JSON.parse()`用于将JSON字符串转换回JavaScript对象。 **描述中的...
本文实例讲述了javascript实现的字符串与十六进制表示字符串相互转换方法。分享给大家供大家参考。具体如下: 之所以写这个,是因为发现SQL注入和XSS中经常利用十六进制表示的字符串,比如 SELECT CONCAT(0x68656c6...
在JavaScript(JS)中,将字符串转换为变量是一项常见的任务,尤其在动态编程或处理用户输入时。在JavaScript中,有几种方法可以实现这个目标,主要涉及到`eval()`函数、`window[]`对象以及`new Function()`构造函数...
JavaScript 实现JSON和字符串之间转换
您可能感兴趣的文章:sql语句中如何将datetime格式的日期转换为yy-mm-dd格式将WMI中的DateTime类型转换成VBS时间的函数代码LINQ字符串向datetime 转换时失败的处理方法Sql中将datetime转换成字符串的
- **JavaScript**: JavaScript中,可以使用`Date.parse()`或`new Date()`构造函数将字符串转换为日期对象。 - **Java**: Java中,`SimpleDateFormat`类是用于日期时间格式化的工具,配合`parse()`方法完成字符串到...
js string转date,js字符串转换成日期,此代码支持将datetime(年月日小时分秒格式)转换为js的Date类型,程序已调试并支持在HTML中运行、代码请见附件。
在JavaScript中,JSON字符串与JavaScript对象之间可以方便地进行转换,这对于数据传输和存储至关重要。本篇文章将深入探讨JSON字符串与JS对象之间的转换方法。 1. `eval` 函数转换 `eval()` 是JavaScript中的一个...
// 将JSON字符串转化为User对象 ``` 在实际开发中,可能会遇到复杂的JSON结构,包含嵌套的对象或数组。在这种情况下,Gson库同样可以很好地处理。例如,如果有`Address`类,可以在`User`类中添加一个`Address`实例...
本手册将深入探讨JavaScript中的字符串,这是编程中常用的数据类型,对于理解和操作文本至关重要。 一、字符串基础 在JavaScript中,字符串是不可变的,意味着一旦创建,其内容就不能更改。字符串可以用单引号(' ')...
这篇文章主要介绍了JS如何把字符串转换成json,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Json格式字符串 "{"rows":[{"date":"2018-11-19","money":"22",...
在编程中,我们经常需要将字符串和ASCII值之间进行转换,以处理或传输数据。以下是对这个主题的详细讲解: 1. 字符串转ASCII 当我们需要将一个字符串转换为ASCII值时,实际上我们是在为每个字符获取其对应的ASCII...
判断所传入的字符串是不是时间类型,日期类型,如果是日期类型可以转换成Date类型
js 自定义trim去除字符串左右杂质 在 Java 中,String 类型提供了 trim() 方法来去除字符串左右的空格。然而,在 JavaScript 中,并没有提供类似的方法来去除字符串左右的杂质。因此,我们需要自定义 trim() 方法来...
1、根据后端返回来的时间戳字符串转成前端显示的日期格式; 2、日期之间的连接符可以自动设置;例如(2022/09/02或者2022-09-02等) 3、包含两个插件,可以直接使用。一个是转成到具体的时间秒,一个是转成到天
JavaScript 字符串和对象操作 JavaScript 中的字符串是一种基本数据类型,用于存储文本数据。字符串可以通过字面量创建,也可以通过构造函数创建。访问字符串中字符可以通过索引访问,例如 `str[0]`,获取字符串...
标题"javascript字符串排序"提示我们关注的重点是如何在JS环境中有效地对字符串进行排序。描述中提到的方法比默认的`sort()`方法效率更高,速度更快,这通常涉及到自定义排序函数的使用。 默认情况下,JavaScript的...
总的来说,json2.js是解决JSON处理兼容性问题的一个工具,它提供了一种安全且标准化的方式来在JavaScript中进行JSON字符串与对象之间的转换,尤其对于那些不支持原生JSON操作的老版本浏览器而言。
将JSON字符串转化为结构体,意味着解析JSON文本并将其内容映射到预先定义的C语言结构体中;反之,将结构体转化为JSON字符串则是将结构体中的数据转换为JSON格式的文本,便于在网络间传递或存储。 关于“反射”这一...
js date转String 日期字符串转换