Javascript эквивалент php strtotime()?

В PHP вы можете легко преобразовать текстовое текстовое описание даты и времени в соответствующую дату с помощью strtotime().

Есть ли что-то подобное в Javascript?

Ответ 1

Я нашел эту статью и попробовал учебник. В принципе, вы можете использовать конструктор даты для синтаксического анализа даты, а затем написать получить секунды из метода getTime()

var d=new Date("October 13, 1975 11:13:00");
document.write(d.getTime() + " milliseconds since 1970/01/01");

Это работает?

Ответ 2

Да, это так. И он поддерживается во всех основных браузерах:

var ts = Date.parse("date string");

Единственное различие заключается в том, что эта функция возвращает миллисекунды вместо секунд, поэтому вам нужно разделить результат на 1000.

Проверьте, какие допустимые форматы могут обрабатывать JavaScript.

Ответ 3

Проверьте эту реализацию PHP strtotime() в JavaScript!

Я обнаружил, что он работает идентично PHP для всего, что я бросил на него.

Обновление: эта функция согласно версии 1.0.2 не может обрабатывать этот случай: '2007:07:20 20:52:45' (обратите внимание : разделитель для года и месяца)

Обновление 2018:

Теперь это доступно в виде модуля npm ! Просто npm install locutus а затем в ваш источник:

var strtotime = require('locutus/php/datetime/strtotime');

Ответ 4

Я ревную strtotime() в php, но я делаю свое в javascript, используя момент. Не так сладко, как от php, но и трюк тоже аккуратно.

// first day of the month
var firstDayThisMonth = moment(firstDayThisMonth).startOf('month').toDate();

Идите туда и обратно с помощью subtract() и add() с помощью endOf() и startOf():

// last day of previous month
var yesterMonthLastDay = moment(yesterMonthLastDay).subtract(1,'months').endOf('month').toDate();

Ответ 5

Существует несколько модулей, которые обеспечивают подобное поведение, но не так, как PHP strtotime. Среди немногих альтернатив я нашел date-util, что дает наилучшие результаты.

Ответ 6

Может быть, вы можете использовать пример функции, например:

function strtotime(date, addTime){
  let generatedTime=date.getTime();
  if(addTime.seconds) generatedTime+=1000*addTime.seconds; //check for additional seconds 
  if(addTime.minutes) generatedTime+=1000*60*addTime.minutes;//check for additional minutes 
  if(addTime.hours) generatedTime+=1000*60*60*addTime.hours;//check for additional hours 
  return new Date(generatedTime);
}

let futureDate = strtotime(new Date(), {
    hours: 1, //Adding one hour
    minutes: 45 //Adding fourty five minutes
  });
document.body.innerHTML = futureDate;

Ответ 7

Поддержка браузера для разбора строк несовместима. Поскольку нет спецификаций, по которым должны поддерживаться форматы, то, что работает в некоторых браузерах, не будет работать в других браузерах.

Попробуйте Moment.js - он обеспечивает кросс-браузерную функциональность для синтаксического анализа даты:

var timestamp = moment("2013-02-08 09:30:26.123");
console.log(timestamp.milliseconds()); // return timestamp in milliseconds
console.log(timestamp.second()); // return timestamp in seconds

Ответ 8

var strdate = new Date('Tue Feb 07 2017 12:51:48 GMT+0200 (Türkiye Standart Saati)');
var date = moment(strdate).format('DD.MM.YYYY');
$("#result").text(date); //07.02.2017
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>

<div id="result"></div>