преобразование даты и времени в формат rfc3339 с использованием jquery или java script

#javascript #jquery #datetime

#javascript #jquery #дата и время

Вопрос:

Как мне преобразовать стандартный пример даты и времени: дд / мм / гггг: 12:00 в формат rfc3339, пример 20100908T070000Z. Мне нужно экспортировать сведения о дате и времени в google calendar, yahoo calendar, microsoft calendar, ical.

Ответ №1:

Ваше требование кажется немного тривиальным, есть ли в нем что-то еще? Вот очевидный ответ:

 function formatTimestring(s) {
  var b = s.split(/[/:]/);
  return b[2]   b[1]   b[0]   'T'   b[3]   b[4]   '00'   'Z'
}

alert(
 formatTimestring('08/09/2010:12:00') //20100908T120000Z
);
  

Если вы хотите сгенерировать строку UTC в запрошенном формате из объекта date или «now», то:

 /*
 *  Return a date string as yyyymmddThhmmssZ
 *  in UTC.
 *  Use supplied date object or, if no
 *  object supplied, return current time 
 */
var dateToUTCString = (function () {

  // Add leading zero to single digit numbers
  function addZ(n) {
    return (n<10)?'0' n:'' n;
  }

  return function(d) {

    // If d not supplied, use current date
    var d = d || new Date();

    return d.getUTCFullYear()   
           addZ(d.getUTCMonth()   1)   
           addZ(d.getUTCDate())  
           'T'   
           addZ(d.getUTCHours())   
           addZ(d.getUTCMinutes())   
           addZ(d.getUTCSeconds())  
           'Z';
  }
}());
  

И если вы хотите использовать mm-dd-yyy hh:mm[:ssam/pm]:

 // input format: mm-dd-yyy hh:mm:ss[ ]am|pm
function timeStringToUTC(s) {

  // Deal with trailing am/pm if present
  // Probably should trim leading spaces here too
  var isPM = /pms*$/i.test(s);
  s = s.replace(/s*pms*$/i,'')

  // Split the string on any of -, space or :
  var b = s.split(/[- :]/);

  // Add 12 to hour if is pm
  if (isPM) {
    b[3] =  b[3]   12;
  } else {
    // Add leading zero if hours less than 10
    b[3] = (b[3] < 10)? '0'    b[3] : b[3];
  }

  // Add leading zero to minutes if < 10
  if (b[4] < 10) b[4] = '0'    b[4];

  // If seconds not supplied, set to 00
  if ( !/^dd?$/.test(b[5])) {
    b[5] = '00';
  } else {
    // Add leading zero if seconds less than 10
    if (b[5] < 10) b[5] = '0'    b[5];
  }

  // Generate date object, call dateToUTCString to return 
  // UTC date string
  return dateToUTCString(
           new Date(b[2]   '/'  
                    b[0]   '/'  
                    b[1]   ' '  
                    b[3]   ':'  
                    b[4]   ':'  
                    b[5]
               )
         ); 
}
  

Комментарии:

1. мы принимаем дату и время от пользователя в формате мм-дд-гг, а время в формате AM / PM — 12 часов, дата и время, введенные пользователем, должны быть добавлены в календарь Google, но принимает формат rfc339 теперь, как мне преобразовать формат времени AM / PM в формат 24 часов, а затем в формат rfc3339 с помощью javascript. Пожалуйста, помогите мне, я новичок и только что закончивший компьютерную науку