#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. Пожалуйста, помогите мне, я новичок и только что закончивший компьютерную науку