字符串替换或通过数组删除
String replace or remove through an array
我正在使用 Google 脚本,所以纯粹的 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)
如果(如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());
}
好吧,这不会给你你给出的确切格式,但也许这不是必需的(如果它是一个对象转储,输出无论如何都可能会有所不同):
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 对象并使用该对象的方法。它还将日期对象转换为字符串,但从您的描述中,我认为您在这种情况下并不关心这一点。
试试这个 -
var arrayLength = data.length;
for (var i = 0; i < arrayLength; i++) {
var newData = data[i].toString().replace("00:00:00", "");
}
我认为数组"data"中的元素基本上是 Date 对象。它们不是字符串。
如果您有日期字符串并且格式一致,则可以使用以下方法重新格式化它:
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
以下是规范化您似乎拥有的日期数组的方法
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
}
相关文章:
- 从组件状态的数组中删除元素
- Mongoose-在更新中删除数组元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 添加和删除隐藏字段数组中的值,而不提交表单
- 从数组中删除重复条目,并在javascript中按顺序排列
- 一些元素没有从数组中删除
- 删除JS数组中的最小数字
- 从数组中删除三元组项
- 删除重复的数组值,然后存储它们[反应]
- 在特定索引处剥离/删除数组中的值
- 数组删除重复结果Javascript
- 字符串替换或通过数组删除
- js中的对象数组:删除重复项
- KnockoutJS.Mapping.FromJS-可观察数组-删除不起作用
- 用于垃圾收集的Javascript数组删除
- 为什么”——数组.删除数组的最后一个元素
- PHP循环通过脚本数组&删除项目
- 谷歌地图API:试图使用数组删除多个标记
- 带有for循环+条件的Javascript数组删除不必要的元素
- 在JavaScript中管理像ArrayList这样的数组:删除一个元素并关闭创建的间隙