2013-07-17 476 views
0

在我的web應用中,用戶需要填寫日期和時間等字段。 在日期它們可以以格式輸入日期: d/M /日 或 DD/MM/YY (不幸的是我無法控制用戶將如何精確地輸入)來自字符串的日期格式javascript google apps script

而且他們還可以挑選從下拉列表中選擇一個時間: 08:00 am8.30am,09:00 am,....,05:00 pm

現在,我試圖將時間和日期字符串轉換爲有效日期對象使用下面的函數,但我得到「Date isInvalid Date」輸出。 我應該如何繼續?

var timeStartString ="1970/01/01 "+ "10:00am"; 
    var st1 =createDate("1/12/2013",timeStartString); 
    Logger.log("Date is"+st1); 

function createDate(dateString,timeString) 
    { 
     var eventDate = new Date(dateString); 
     var eventTime = new Date(timeString) 

     message +="Date String:"+dateString + " timeString "+timeString; 

     eventTime.setFullYear(eventDate.getFullYear()); 
     eventTime.setDate(eventDate.getDate()); 
     eventTime.setMonth(eventDate.getMonth()); 

     return eventTime; 
    } 

回答

0

如果am或pm直接與時間關聯,Date類將不會識別時間。例如new Date("1/12/2013 10:00am")將返回Invalid Date,而new Date("1/12/2013 10:00 am")將返回Sat Jan 12 2013 22:00:00。這是一個微妙的差異,但這就是解析器的構建方式。如果將日期與格式正確的時間字符串連接起來,則根本不需要使用createDate方法。

4

您可能想使用Moment.js庫,這使得JavaScript中日期解析和操作變得更容易一些。有關如何在Apps Script here中使用它的更多信息。如果日期格式一致,那麼您可以使用自定義格式字符串來解析它。

var date = moment('1970/01/01 10:00am', 'YYYY/MM/DD HH:mma').toDate();