PHP의 strtotime ()과 동등한 Javascript?


답변:


52

이 기사를 찾아서 튜토리얼을 시도했습니다. 기본적으로 날짜 생성자를 사용하여 날짜를 구문 분석 한 다음 getTime()메서드 에서 초를 가져올 수 있습니다.

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

작동합니까?


날짜가 dmY 형식으로 형식화되어 작동하지 않는 것 같습니다.
Valentin Despa 2013

30
-1. 이는 RFC 822 또는 ISO 8601 형식의 날짜 만 다루지 만 strtotime()다른 많은 형식을 지원합니다.
Ja͢ck 2013 년

1
이것은 OP의 사용 사례를 충족시키기 위해 발생할 수 있지만 기술적으로 올바르지 않고 질문에 대한 잘못된 대답입니다. Westy92의 답변을 참조하십시오 (그리고 찬성하십시오).
Nate Abele

68

네, 그렇습니다. 그리고 모든 주요 브라우저에서 지원됩니다.

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

유일한 차이점은이 함수는 초 대신 밀리 초를 반환하므로 결과를 1000으로 나누어야합니다.

JavaScript가 구문 분석 할 수있는 유효한 형식을 확인하십시오.


29
아니; 이 PHP를 한 strtotime에 비해 매우 다른 작품, PHP는 문서 작업이 아닌 하나 하나의 사례 없음strtotime("now"); strtotime("10 September 2000"); strtotime("+1 day"); strtotime("+1 week"); strtotime("+1 week 2 days 4 hours 2 seconds"); strtotime("next Thursday"); strtotime("last Monday");
이반 카스텔라

1
@Arnaldo 감사합니다. 이것은 나를 위해 일하고 있습니다. 이상의 "Djechelon의"더 허용 답변
안녕

이것은 작동하지만 신뢰할 수 없습니다. Date.parse ( '2020-06-06')는 Date.parse ( 'June 6, 2020')와 동일한 타임 스탬프를 반환해야하지만 그렇지 않습니다. (1591401600000 대 1591423200000)
Vincent

35

확인 자바 스크립트에서 PHP의 한 strtotime ()의 구현을!

나는 그것이 내가 던진 모든 것에 대해 PHP와 동일하게 작동한다는 것을 발견했습니다.

업데이트 : 버전 1.0.2에 따른이 기능은이 경우를 처리 할 수 ​​없습니다 : '2007:07:20 20:52:45' ( :연도 및 월 구분자 참고 )

2018 업데이트 :

이제 npm모듈 로 사용할 수 있습니다 ! 간단히 npm install locutus그리고 소스에서 :

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

3
나는 일반적으로 라이브러리에 대한 링크 인 답변을 좋아하지 않지만이 경우 JavaScript는 거의 미친 경우를 strtotime으로 처리하지 않으므로 환상적인 답변입니다. 감사합니다!
곰팡내 나는

Locutus의 최신 릴리스 (현재 2018 년 9 월 7 일)는 '어제 19:00'와 같은 문자열을 처리하지 않습니다.
nicolas

4

나는 PHP에서 strtotime ()을 질투하지만 순간을 사용하여 자바 스크립트에서 내 작업을 수행합니다. 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

문자열 구문 분석에 대한 브라우저 지원 이 일치하지 않습니다 . 어떤 형식이 지원되어야하는지에 대한 사양이 없기 때문에 일부 브라우저에서 작동하는 것이 다른 브라우저에서는 작동하지 않습니다.

시도 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

이것은 질문에 대한 완전한 대답이 아닙니다 (음수 점수를 가짐). 현상금을 취소 할 수있는 방법이 있습니까?
Westy92

0

유사한 동작을 제공하는 모듈이 거의 없지만 PHP의 strtotime과 똑같지는 않습니다. 몇 가지 대안 중에서 date-util 이 최상의 결과를 산출한다는 것을 알았습니다 .


0

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>


지원 중단 경고 : 제공된 값이 인식 된 ISO 형식이 아닙니다. 현재 건설 JS로 다시 떨어지면Date() - 같은 sooo를 ... 같은 new Date(strdate)정말 ...
deceze

0

아마도 다음과 같은 샘플 함수를 이용할 수 있습니다.

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;

`

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.