日期格式之间的转换

时间:2012-11-17 12:59:19

标签: date format google-apps-script

我有一个电子表格,用于记录我们的工作。我已经将工作表中的日期列读入数组,以便我可以对它们执行操作/计算。这对我不起作用,因为我在调试器中注意到,保存日期的数组具有不同格式的日期值。例如,有些显示为“16/11/2012”,有些显示为(new Date(1355184000000))。

有人可以指出将它们全部转换为统一格式的方式,以便我可以使用它们吗?

由于

1 个答案:

答案 0 :(得分:1)

您希望如何显示日期?你想让它们成为'约会对象'或字符串吗?您在代码中显示的值(新日期(1355184000000))对应Mon Dec 10 16:00:00 PST 2012 您可以使用Logger.log(new Date(1355184000000))

进行检查

相反"16/11/2012"很可能不是日期而是字符串...... (注意:奇怪的是,你使用“日/月/年”序列,因为我在你的个人资料中看到你是在英国,我以为你会使用mm / dd / yyyy)

既然你说你需要对这些项目进行一些计算,我猜他们都应该转换为日期对象,以便在你的脚本中使用它们。 我建议您查看some documentation on date object以确切了解如何在不产生错误的情况下完成此操作。不要忘记javascript中的日期始终为日期和时间,格式为hh:mm:ss和毫秒。你看到的整数值是自1970年1月以来的毫秒数;-)
你也可以做一个search on dates in this forum并找到很多有趣的信息。

这是一个小函数来说明:

function playWithTime(){
Logger.log('ref date = '+new Date(0))
var example = "june 30, 2013 23:59:00"
Logger.log(example+' = '+ new Date("june 30, 2013 23:59:00"))
Logger.log(example+' = '+ new Date("june 30, 2013 23:59:00").getTime()+' mS')
}

它将在Logger中显示:

ref date = Thu Jan 01 1970 01:00:00 GMT+0100 (CET)
june 30, 2013 23:59:00 = Sun Jun 30 2013 23:59:00 GMT+0200 (CEST)
june 30, 2013 23:59:00 = 1372629540000 mS

顺便说一下,请注意Logger会以不同的方式返回值,具体取决于您所在时区的夏令时......我在比利时,6月是'夏季'(CEST)。它也可以在PDT或PST中显示,这是Google服务器的时区。你不能依赖记录器来保持不变(!!),但这是另一个故事;-)


编辑:如果您的日期字符串格式为dd / mm / yyyy,那么您应该重新排序,就像在此代码中一样:

function playWithTime2(){
Logger.log('original date string in UK format = 16/11/2012')
var d = "16/11/2012".split('/');
var d_ordered=d[1]+'/'+d[0]+'/'+d[2]
Logger.log('becomes '+d_ordered+' = '+new Date(d_ordered))
}

返回

original date string in UK format = 16/11/2012
becomes 11/16/2012 = Fri Nov 16 2012 00:00:00 GMT+0100 (CET)