我正在使用Google Scripts这么纯粹的JS。
我有以下数组:
[Tue Dec 23 00:00:00 GMT+00:00 2014,
816.43,
Tue Jan 28 00:00:00 GMT+00:00 2014,
729.43]
我想重新格式化日期以删除时间和GMT部分,所以它看起来像这样:
[Tue Dec 23 2014,
816.43,
Tue Jan 28 2014,
729.43]
我创建了一个for
循环,并尝试使用.replace
函数将00:00:00
和GMT+00:00
替换为我的""
。数组名为data
var arrayLength = data.length;
for (var i = 0; i < arrayLength; i++) {
var newData = data[i].replace("00:00:00", "");
}
我收到以下错误:
TypeError: Cannot find function replace in object Tue Dec 23 2014 00:00:00 GMT-0000 (GMT)
答案 0 :(得分:0)
如果您有日期字符串且格式一致,则可以使用以下内容重新格式化:
var s = 'Tue Dec 23 00:00:00 GMT+00:00 2014';
var m = s.match(/^\w{3} \w{3} \d+|\d+$/g);
if (m) console.log(m.join(' '));
或
var n = s.split(' ');
console.log([n[0],n[1],n[2],n[5]].join(' '));
或
console.log(n[0] + ' ' + n[1] + ' ' + n[2] + ' ' + n[5]);
如果您有Date对象并希望以OP中建议的格式输出它们,您可以编写简单的函数,如:
function formatDate(d) {
var days = ['Sun','Mon','Tue','Wed','The','Fri','Sat'];
var months = ['Jan','Feb','Mar','Apr','May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec'];
function z(n){return (n<10?'0':'') + n}
return days[d.getDay()] + ' ' + months[d.getMonth()] + ' ' +
z(d.getDate()) + ' ' + d.getFullYear();
}
console.log(formatDate(new Date(2014,11,2))); // Tue Dec 02 2014
答案 1 :(得分:0)
如果(如对OP的评论中所述)你需要比较两个日期而忽略时间,最简单的方法就是编写一些代码来完成它。有几种方法可以解决这个问题:
00:00:00.0000
您选择哪种方法取决于您自己的应用程序。
比较两个日期,忽略时间:
function sameDay(d1, d2) {
return d1.getFullYear() === d2.getFullYear() &&
d1.getMonth() === d2.getMonth() &&
d1.getDate() === d2.getDate();
}
创建一个新的Date实例,将时钟设置回到午夜:
function midnightOf(d) {
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
}
答案 2 :(得分:0)
试试这个 -
var arrayLength = data.length;
for (var i = 0; i < arrayLength; i++) {
var newData = data[i].toString().replace("00:00:00", "");
}
我认为数组'data'中的元素基本上是Date对象。它们不是字符串。
答案 3 :(得分:0)
嗯,这不会给你你给出的确切格式,但也许不是必要的(如果它是一个对象转储,输出可能会有所不同):
for (var i = 0, arrayLength = data.length; i < arrayLength; i++) {
if (data[i] instanceof Date) {
data[i] = [data[i].getDay(), data[i].getMonth(), data[i].getYear()].join(' ');
}
}
假设您正在处理Date对象并使用object's methods。它还将日期对象转换为字符串,但是根据您的描述,我认为在这种情况下您并不关心它。
答案 4 :(得分:0)
以下是如何规范您似乎拥有的日期数组
var arrayLength = data.length;
for (var i = 0; i < arrayLength; i++) {
data[i].setHours(12,0,0,0); // set to noon in case we are crossing DST
}