0

私の Web アプリでは、ユーザーは日付や時刻などのフィールドに入力する必要があります。日付では、d/m/yy または dd/mm/yy の形式で日付を入力できます (残念ながら、ユーザーがどのように正確に入力するかを制御することはできません)。

また、ドロップダウン リストから時間を選択することもできます: 午前 08:00、午前 8 時 30 分、午前 9:00、...、午後 5:00

現在、以下の関数を使用して時刻と日付の文字列を有効な日付オブジェクトに変換しようとしていますが、「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;
    }
4

2 に答える 2

4

JavaScript での日付の解析と操作を少し簡単にするMoment.jsライブラリの使用を検討することをお勧めします。Apps Script での使用方法の詳細については、こちらをご覧ください。日付形式が一貫している場合は、カスタム形式の文字列を使用して解析できます。

var date = moment('1970/01/01 10:00am', 'YYYY/MM/DD HH:mma').toDate();
于 2013-07-18T15:34:44.230 に答える
0

時刻に直接 am または pm が付加されている場合、Date クラスは時刻を認識しません。たとえば、new Date("1/12/2013 10:00am")が返されますがInvalid Datenew Date("1/12/2013 10:00 am")返されSat Jan 12 2013 22:00:00ます。微妙な違いですが、それがパーサーの構築方法です。createDate日付を適切にフォーマットされた時間文字列と連結する場合、このメソッドはまったく必要ありません。

于 2013-07-17T21:51:32.950 に答える