2016-03-05 2 views
0

В моей базе данных Я должен указать дату в формате ISO с часовым поясом. Например, у меня есть следующий столбец ввода:Как конвертировать дату в строку с часовым поясом

17/02/2016 22:00:00 +01:00 

У меня есть веб-службы, которые принимают дату (в объект JSON), как это:

{ 
    //... 
    "Start": "2016-02-17T22:00:00+01:00" 
    //... 
} 

Теперь в моем яваскрипта коде я пробовал:

var today = new Date(); 
var dateString = today.toISOString(); 

Но выход DateString является:

"2016-03-05T12:10:32.537Z" 

Как я могу получить строку, как это:

"2016-03-05T13:10:32.537+01:00" 

Благодаря

+1

Используйте 'toString()' вместо 'toISOString()' и он дает вам часовой пояс –

+0

, вы можете использовать http://momentjs.com/, и это легко: 'moment (new Date()). format(); ' –

+0

@AralRoca - или просто' moment(). format() '. ;) –

ответ

0

Я считаю, что вы не можете получить локальный формат ISO 8601 непосредственно из Date функции. toISOString() дает время в UTC/GMT: 2016-03-05T12: 10: 32.537Z (это то, что Z в конце концов, для, это означает UTC)

Это, как вы можете сделать это, составляя струна себя:

var date = new Date(); // this is your input date 
 

 
var offsetHours = -date.getTimezoneOffset()/60; 
 
var offsetMinutesForDisplay = Math.abs(-date.getTimezoneOffset() % 60); 
 
var offsetHoursForDisplay = Math.floor(offsetHours) + (offsetHours < 0 && offsetMinutesForDisplay != 0 ? 1 : 0); 
 
var isoOffset = (offsetHours >= 0 ? ("+" + fillDigit(offsetHoursForDisplay, true)) : fillDigit(offsetHoursForDisplay, true)) + ':' + fillDigit(offsetMinutesForDisplay, true); 
 

 
document.getElementById('myDiv').innerHTML = date.getFullYear() + '-' + fillDigit(date.getMonth() + 1, true) + '-' + fillDigit(date.getDate(), true) + 'T' + fillDigit(date.getHours(), true) + ':' + fillDigit(date.getMinutes(), true) + ':' + fillDigit(date.getSeconds(), true) + isoOffset; 
 

 
function fillDigit(value, withDigit) { // we want to display 04:00 instead of 4:00 
 
    if (value >= 0 && value < 10) { 
 
    return (withDigit ? "0" : " ") + value; 
 
    } 
 
    if (value > -10 && value < 0) { 
 
    return '-' + (withDigit ? "0" : " ") + (-value); 
 
    } 
 
    return value; 
 
}
<div id='myDiv'></div>

вы можете проверить http://currentmillis.com/?now для Javascript, что поможет вам несколько форматов

0

Если вы ва нт пользовательский формат, который нужно отформатировать дату самостоятельно, используя методы объекта Date, как:

date = new Date(); 
hour= date.getHours(); 
min= date.getMinutes(); 
sec= date.getSeconds(); 

time= hour+':'+min+':'+sec; 
console.log(time) 

Это может быть инкапсулированный в функции или метода объекта для удобства.

Смежные вопросы