Javascript-эквивалент PHP-strtotime ()? - PullRequest
       6

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

76 голосов
/ 29 октября 2010

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

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

Ответы [ 8 ]

60 голосов
/ 05 февраля 2012

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

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

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

Проверьте, какие допустимые форматы может анализировать JavaScript.

48 голосов
/ 29 октября 2010

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

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

Работает ли это?

31 голосов
/ 12 июля 2013

Проверьте эту реализацию 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 голосов
/ 09 января 2016

Я завидую 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();
0 голосов
/ 25 мая 2019

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

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;

`

0 голосов
/ 06 февраля 2017

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>
0 голосов
/ 15 июня 2016

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

0 голосов
/ 08 мая 2016

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

Попробуйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...