2012-11-17 32 views
0

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

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

谢谢

+0

对不起,我将我以前的评论在回答中能够对其进行格式化更容易。然后删除它。 –

回答

1

你想如何显示日期?你想让它们成为'日期对象'还是字符串?您在代码中显示的值(新的日期(13551.84亿))对应于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 

顺便说一句,注意记录器以不同的方式返回值,这取决于日光节省您的时区...我在比利时,六月在'夏季'时间(CEST)。它也可以在Google服务器的时区PDT或PST中显示。你不能依靠记录仪是恒定的(!),但是这是另一个故事;-)


编辑:如果你的日期字符串的形式为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) 
+0

谢谢Serge的详细和明确的答案。现在我明白了,我想将工作表中的所有文本日期值转换为日期对象。我已经尝试转换数组中的值,然后将其应用于工作表,但它似乎失败 'for(var i = 0; i jad

+0

对不起,我不知道英国的日期格式!高兴地听到,我们共同拥有这个;-)我编辑我的答案和建议转换日期为字符串 –

+0

您的帮助非常感谢再次塞尔:)我他们全部转换为Date对象,并通过执行发现我的数据简单的计算,我需要他们在阵列中的位置。 – jad