const makeDate = HHMM => {
const [H, M] = HHMM.split(':').map(Number);
const D = new Date();
D.setHours(H);
D.setMinutes(M);
D.setSeconds(0);
return D;
};
const oo = n => n.toString().padStart(2, '0'); // 5 => '05'
const fillTime = (startHHMM, finishHHMM, intervalMinutes) => {
let startDate = makeDate(startHHMM);
let finishDate = makeDate(finishHHMM);
if (startDate > finishDate) { // объекты Date можно так сравнивать
[startDate, finishDate] = [finishDate, startDate]; // поменять местами
}
const dates = [];
const D = new Date(startDate);
while (D <= finishDate) {
dates.push(new Date(D));
D.setMinutes(D.getMinutes() + intervalMinutes);
}
return dates.map(D => [D.getHours(), D.getMinutes()].map(oo).join(':'));
};
console.log(fillTime('15:56', '18:15', 17));
// [ "15:56", "16:13", "16:30", "16:47", "17:04", "17:21", "17:38", "17:55", "18:12" ]
const diffHours = Math.ceil((endDate - startDate) / 36e5); // точно в бОльшую сторону округлять?
const days = Math.floor(diffHours / 24);
const hours = diffHours - days * 24;
console.log(`Срок аренды: ${days} дней и ${hours} часов`);
const months_RU = 'Января,Февраля,Марта,Апреля,Мая,Июня,Данунаф,Лень,Дальше,Сами'
.split(',');
const parseDate = d => d.split('.')
.reduce((acc, c, i) => (acc.unshift(i & 1 ? months_RU[+c - 1] : +c), acc), [])
.join(' ');
parseDate('2020.06.01') // "1 Июня 2020"
['2020', '06', '01']
;.unshift()
;i & 1
вернёт 1 только для месяца;-1
.+
[1, 'Июня', 2020]
join(' ')
const gotTime = (dateStr, days) => {
const che = new Date(dateStr); // дата события
che.setDate(che.getDate() - days); // N дней до события
return che - new Date() > 0; // ещё не наступила граница N-дней-до-события
}
gotTime('2019-11-14T09:07:02.376+00:00', 3); // true
// сегодня 2019-10-15
gotTime('2019-10-19T09:07:02.376+00:00', 3); // true
gotTime('2019-10-18T09:07:02.376+00:00', 3); // false
gotTime('2019-10-17T09:07:02.376+00:00', 3); // false
setDate(1)
, setMonth(0)
и прибавлять по 1 дню. Месяца перевернутся автомагически.mm/dd/yyyy
можно использовать локальный формат дат для США, указав в опциях, что даты и месяц выводить как 2-цифры.const dates = [];
const options = { year: 'numeric', month: '2-digit', day: '2-digit' };
const d = new Date();
d.setMonth(0);
d.setDate(1);
const year = d.getFullYear();
while(d.getFullYear() === year) {
dates.push(d.toLocaleDateString('en-US', options));
d.setDate(d.getDate() + 1);
}
/*
01/01/2019
01/02/2019
01/03/2019
01/04/2019
01/05/2019
01/06/2019
01/07/2019
01/08/2019
01/09/2019
01/10/2019
...
*/
[дата, месяц, год]
, у сегодняшней даты сбросить часы, минуты, секунды, миллисекунды на ноль - чтобы тоже начало дня было. Посчитать разницу двух дат в миллисекундах, перевести в сутки:function daysTill(ddmmyyyy) {
let dd, mm, yyyy;
[dd, mm, yyyy] = ddmmyyyy.split('.');
const Till = new Date(yyyy, mm-1, dd);
const Now = new Date();
return Math.floor((Till - Now) / 864e5);
}
daysTill("01.03.2019") // 13
strtotime('monday this week');
(только на англ.)$rusdate='ПТ 18:00';
list($dow, $hours, $minutes) = sscanf($rusdate, "%s %d:%d");
$rusweek = explode(',','ВС,ПН,ВТ,СР,ЧТ,ПТ,СБ');
$ndow = array_search($dow, $rusweek);
date_default_timezone_set('Europe/Moscow'); // если не настроен PHP
$time = strtotime('monday this week') + 86400 * $ndow + 3600 * $hours + 60 * $minutes;
echo date('Y-m-d H:i:s', $time);
// 2018-10-13 18:00:00
const today = new Date(); // сегодня, сейчас. 22 сентября
const tomorrow = new Date();
tomorrow.setDate( tomorrow.getDate() + 1); // +1 день, 23 сентября, это же время.
const plus13days = new Date();
plus13days.setDate( plus13days.getDate() + 13); // +13 дней, 5 октября
var D = new Date();
D.setDate(1);
D.setMonth(7); // 0: Янв, 1: Фев, ... 7: Август
D.setHours(12); // опционально
D.setMinutes(0); // опционально
D.setSeconds(0); // опционально
if(D.getTime() > new Date().getTime()) D.setFullYear( D.getFullYear() - 1);
D.toString() // Tue Aug 01 2017 12:00:00 GMT+0300 (MSK)
// и можно из Даты создать объект moment:
var m = moment(D);
var D = new Date("2017-08-27")
, Till = new Date()
, result = []
;
function pad(s){ return ('00' + s).slice(-2)}
while( D.getTime() < Till.getTime()) {
result.push( '' + D.getFullYear() +'-'+ pad(D.getMonth()+1) +'-'+ pad(D.getDate()));
D.setDate( D.getDate()+1);
}
// 2017-08-27,2017-08-28,2017-08-29,2017-08-30,2017-08-31
var dt = new Date();
var date = dt.getDate();
if( date < 15) dt.setDate(1); // до 15-го числа будет 1-е
else dt.setDate(15); // после 15-го – 15-е
// Display the month, day, and year. getMonth() returns a 0-based number.
var day = dt.getDate();
var month = dt.getMonth()+1;
var year = dt.getFullYear();
document.write(day + '-' + month + '-' + year);
function getPostScore(time) {
var diff = Math.floor((new Date()).getTime()/1000) - time;
if( diff <= 3600) return 50000;
else if( diff <= 7200) return 25000;
else if( diff <= 10800) return 10000;
else return 0;
}
getPostScore(1493487180); // 10000
y = k / x
k = 50000 * 3600
она удачно захватывает и вторую точку. Но плоха тем, что ближе к нулю зашкаливает в +бесконечность.function getPostSigma(time){
var diff = Math.floor((new Date()).getTime()/1000) - time;
return Math.round( 10000 + 40000 / (1 + Math.exp((diff-6800)/700)));
}
getPostSigma(1493531780); // 49998
getPostSigma(1493522780); // 11545
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()
) {
// ура! День рождения!
}