Date.prototype.get日期;不能在Safari中工作
Date.prototype.getDay doesn't work in Safari
这个脚本在Chrome中运行得很好,但在Safari中没有定义。你知道怎么解决吗?
var dateString = "2013-07-31 12:00:00";
var daysOfWeek = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
var whichDay = daysOfWeek[new Date(dateString).getDay()];
alert(whichDay);
JSfiddle:http://jsfiddle.net/utn3yyzc/
让我们看看MDN对将日期字符串发送到Date
构造函数有什么看法。
MDN:全局对象:日期
语法
new Date(dateString)
;参数
dateString
表示日期的字符串值。字符串应采用
Date.parse()
方法识别的格式(符合IETF的RFC 2822时间戳以及ISO8601版本)。注意:强烈建议使用
Date
构造函数(和Date.parse
,它们是等效的)分析日期字符串,因为浏览器存在差异和不一致。
我们看到这种解析方法是不可靠的;强烈气馁";,所以我们必须实现我们自己的解析,或者使用一个可以为我们做这件事的库
手动方式
只需从给定字符串中解析日期。
function parseDate(datestring) {
var d = datestring.split(/'D+/g).map(function(v) { return parseInt(v, 10); });
return new Date(d[0], d[1] - 1, d[2], d[3], d[4], d[5]);
}
var dateString = "2013-07-31 12:00:00";
var daysOfWeek = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ];
var whichDay = daysOfWeek[parseDate(dateString).getDay()];
alert(whichDay);
Library(MomentJS)解决方案
var whichDay = moment('2013-07-31 12:00:00', 'YYYY-MM-DD HH:mm:ss').format('dddd');
alert(whichDay);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.min.js"></script>
更新
这是一个使用i18n:的现代版本
const
parseDate = (datestring) =>
(([year, month, date, hour, minute, second]) =>
new Date(year, month - 1, date, hour, minute, second))
(datestring.split(/'D+/g).map(v => parseInt(v, 10))),
dateString = '2013-07-31 12:00:00',
whichDay = parseDate(dateString)
.toLocaleString('en-US', { weekday: 'long' });
console.log(whichDay);
new Date(dateString)
返回无效日期。
我建议以更明确的方式解析日期字符串(Safari似乎不支持这种格式)。
例如:
var dateString = "2013-07-31 12:00:00";
var split = dateString.split(' ');
var dateSplit = split[0].split('-');
var hourSplit = split[1].split(':');
var d = new Date(dateSplit[0], dateSplit[1] - 1, dateSplit[2], hourSplit[0], hourSplit[1], hourSplit[2]);
相关文章:
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- 为什么我的JavaScript在Safari上的严格模式下不能正常工作
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- 异步加载的SVG过滤器feColorMatrix在Chrome中工作,而不是在Safari或Firefox中
- RGB 到 HEX JavaScript 函数在 Chrome 中工作,但不能在 Firefox 或 Safari 中工
- setInterval 或 window.location 在 Opera、IE 和 Safari 中无法正常工作
- window.onbeforeunload在IE8中不触发(在Firefox,Chrome和Safari中工作正常)
- toLocaleString()不会'无法在Safari浏览器中工作
- 动画HTML5横幅工作在除Safari以外的一切
- Date.prototype.get日期;不能在Safari中工作
- jQuery UI手风琴无法在本地目录的Safari中工作
- html+css+js组合在Google Chrome或Safari浏览器中无法正常工作
- window.open()没有'无法在添加到主屏幕的移动Safari web应用程序中工作
- webkitAudioContext在iOS Safari上创建MediaElementSource不工作
- JQuery图像大小计算没有'不能在Chrome/Safari中工作
- JavaScript倒计时;不能在Safari中工作
- style.display无法在Chrome、Safari-Firefox、IE11中正常工作
- 为什么这个html5音频不能在chrome上工作,但在safari上工作得很好
- 复选框事件处理程序抛出错误的点击事件在chrome浏览器,safari工作良好的键盘事件
- document.referrer不在safari工作