我正在尝试从以下对象中提取日期(已经过字符串化。)
我是正则表达式的新手,不知道该怎么做。
I tried /^(\d{4})\-(\d{1,2})\-(\d{1,2})$/gmi -> but it didnot work.
{"Date":"2016-05-16","Package Name":"com.myapp.mobile","Current Device Installs":"15912","Daily Device Installs":"41","Daily Device Uninstalls":"9","Daily Device Upgrades":"3","Current User Installs":"12406","Total User Installs":"23617","Daily User Installs":"27","Daily User Uninstalls":"8"}
答案 0 :(得分:1)
请勿在此处使用正则表达式。
UIView
,除非有充分的理由不这样做(你没有在你的问题中说明一个)
如果您想将字符串“2016-05-16”变为年,月和日的3个变量(不使用日期库),我只使用IBDesignable
:
JSON.parse(str).Date
答案 1 :(得分:0)
你的正则表达式匹配正常,只是不要使用/gmi
标志
"2016-05-16".match(/^(\d{4})\-(\d{1,2})\-(\d{1,2})$/)
你可以让它变得更简单..
"2016-05-16".match(/(\d{4})-(\d{2})-(\d{2})/)
但是,你真的应该使用一个库,比如moment.js,或者至少Date
,因为这个ISO-8601会很好。
const date = new Date("2016-05-16");
date.getYear();
答案 2 :(得分:0)
正如评论中所建议的那样,您可以通过解析JSON来获取日期(为方便起见,在下面进行了修剪):
var s = '{"Date":"2016-05-16","Package Name":"com.myapp.mobile"}';
var dateString = JSON.parse(s).Date;
document.write(dateString);

如果需要Date对象,则可以解析该字符串。请注意,由于浏览器不一致,建议不要使用 Date 构造函数或 Date.parse 来解析字符串。手动解析ISO日期非常简单,您只需要决定是将其解析为本地还是UTC。
由于ECMA-262要求仅将日期ISO格式解析为UTC,以下函数将可靠地执行此操作(并返回超出范围值的无效日期):
/* Parse an ISO 8601 format date string YYYY-MM-DD as UTC
** Note that where the host system has a negative time zone
** offset the local date will be one day earlier.
**
** @param {String} s - string to parse
** @returs {Date} date for parsed string. Returns an invalid
** Date if any value is out of range
*/
function parseISODate(s) {
var b = s.split(/\D/);
var d = new Date(Date.UTC(b[0], b[1]-1, b[2]));
return d && d.getMonth() == b[1]-1? d : new Date(NaN);
}
var d = parseISODate('2016-05-16');
document.write('UTC date: ' + d.toISOString() + '<br>' +
'Local date: ' + d.toString());
&#13;