【问题标题】:Date from string in format javascript google apps script日期从字符串格式 javascript 谷歌应用程序脚本
【发布时间】:2013-07-17 21:38:04
【问题描述】:

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

他们还可以从下拉列表中选择时间: 08:00am,8.30am,09:00am,...., 05:00pm

现在,我正在尝试使用下面的函数将时间和日期字符串转换为有效的日期对象,但我得到了“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;
    }

【问题讨论】:

    标签: javascript date google-apps-script


    【解决方案1】:

    您可能想考虑使用Moment.js 库,它使JavaScript 中的日期解析和操作更容易一些。有关如何在 Apps 脚本here 中使用它的更多信息。如果日期格式一致,则可以使用自定义格式字符串进行解析。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多