javascript谷歌应用程序脚本格式的字符串中的日期

Date from string in format javascript google apps script

本文关键字:字符串 日期 格式 谷歌 应用程序 脚本 javascript      更新时间:2023-09-26

在我的web应用程序中,用户需要填写日期和时间等字段。在日期中,他们可以按以下格式输入日期:年月日或年月日(不幸的是,我无法控制用户将如何输入)

他们还可以从下拉列表中选择时间:上午08:00、上午8:30、上午09:00,下午05:00

现在,我正试图使用下面的函数将时间和日期字符串转换为一个有效的日期对象,但我得到了"DateisInvalidDate"的输出。我该如何处理?

  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;
    }

您可能想研究一下Moment.js库的使用,它使JavaScript中的日期解析和操作更加容易。有关如何在应用程序脚本中使用它的详细信息,请点击此处。如果日期格式是一致的,那么您可以使用自定义格式字符串来解析它

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

如果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方法。