Как определить точную разницу в годах между текущей датой и датой в формате "0000-00-00 00:00:00". На PHP это решается просто:
DateTime::createFromFormat("Y-m-d H:i:s", '2014-09-12 00:00:00')
->diff(new DateTime('now'))
->y;
Есть подобное элегантное решение на Java Script?
Создать два объекта Date – день рождения и сейчас. Чтобы гарантированно правильно получить из текстовой строки, как у вас, объект даты, надо привести её сначала к формату ISO 8601. Проще всего заменить пробел на букву "T". Но такая дата будет в часовом поясе UTC, надо её скорректировать, добавив минуты из getTimezoneOffset(). Например, дата "2014-09-12 00:00:00" по Мск, это 11 сентября 21:00 по UTC. При сравнении из «сейчас» будем тоже брать время по UTC – getUTCMonth() и т.п.
Получив две даты, сравним их месяцы и дни. Если требуется бОльшая точность, то ещё и часы, минуты, секунды:
var sqlDT = "2014-09-12 00:00:00";
var BD = new Date( sqlDT.replace(' ','T'));
var Now = new Date();
BD.setMinutes( BD.getMinutes() + Now.getTimezoneOffset()); // в UTC
if( BD.getMonth() === Now.getUTCMonth()
&& BD.getDate() === Now.getUTCDate()
) {
// ура! День рождения!
var y = Now.getUTCFullYear() - BD.getFullYear(); // сколько полных лет
}
Альтернативный вариант – подключить библиотеку для работы с датами и временем – MomentJS, и найти подходящие методы в ней.
Если вы под точной разницей имели в виду именно значение года, а не годы по количеству прошедших месяцев, то можно так:
var unix_date = "2016-01-01 00:00:00";
var jsYear = new Date(unix_date).getFullYear();
var currentYear = new Date().getFullYear();
var yearsDifference = currentYear - jsYear;
console.log(yearsDifference);
Итоговый код. На вход идет дата в формате '0000-00-00 00:00:00', на выходе количество полных лет с текущей даты:
function age_count(date) {
// now
var now = new Date();
now.setMinutes(now.getMinutes() - now.getTimezoneOffset());
now = now.toISOString().substr(0, 19).replace('T',' ');
// calculate
var age = now.substr(0, 4) - date.substr(0, 4);
if(now.substr(5) < date.substr(5)) --age;
// output
return age;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Мне нужно сделать, чтобы после нажатия кнопки "проверка" с вероятностью в 50% отображался текст "Да" или "Нет" Как это реализовать?