In PHP, you can easily convert an English textual datetime description into a proper date with strtotime()
.
Is there anything similar in Javascript?
In PHP, you can easily convert an English textual datetime description into a proper date with strtotime()
.
Is there anything similar in Javascript?
I found this article and tried the tutorial. Basically, you can use the date constructor to parse a date, then write get the seconds from the getTime()
method
var d=new Date("October 13, 1975 11:13:00");
document.write(d.getTime() + " milliseconds since 1970/01/01");
Does this work?
strtotime()
supports many other formats. –
Forbearance new Date('2021-04-01')
will have a time of midnight with a UTC timezone where as the date new Date('04/01/2021')
will be created with a time of midnight in the local timezone. This difference can create subtle bugs in a program if you're parsing dates with both string formats. –
Resonance There is not. The closest built-in option is Date.parse()
, which parses a very limited subset of what strtotime()
can:
var ts = Date.parse("2010-10-29");
It's worth noting that this function returns milliseconds instead of seconds, so you need to divide the result by 1000 to get an equivalent value to PHP's function.
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");
–
Obvert strtotime()
. There is no comparable functionality without an external library, which is why this answer got my +1. –
Donetsk I found this article and tried the tutorial. Basically, you can use the date constructor to parse a date, then write get the seconds from the getTime()
method
var d=new Date("October 13, 1975 11:13:00");
document.write(d.getTime() + " milliseconds since 1970/01/01");
Does this work?
strtotime()
supports many other formats. –
Forbearance new Date('2021-04-01')
will have a time of midnight with a UTC timezone where as the date new Date('04/01/2021')
will be created with a time of midnight in the local timezone. This difference can create subtle bugs in a program if you're parsing dates with both string formats. –
Resonance Check out this implementation of PHP's strtotime() in JavaScript!
I found that it works identically to PHP for everything that I threw at it.
Update: this function as per version 1.0.2 can't handle this case:
'2007:07:20 20:52:45'
(Note the:
separator for year and month)
This is now available as an npm
module! Simply npm install locutus
and then in your source:
var strtotime = require('locutus/php/datetime/strtotime');
I jealous the strtotime() in php, but I do mine in javascript using moment. Not as sweet as that from php, but does the trick neatly too.
// first day of the month
var firstDayThisMonth = moment(firstDayThisMonth).startOf('month').toDate();
Go back and forth using the subtract()
and add()
with the endOf()
and startOf()
:
// last day of previous month
var yesterMonthLastDay = moment(yesterMonthLastDay).subtract(1,'months').endOf('month').toDate();
Browser support for parsing strings is inconsistent. Because there is no specification on which formats should be supported, what works in some browsers will not work in other browsers.
Try Moment.js - it provides cross-browser functionality for parsing dates:
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
There are few modules that provides similar behavior, but not exactly like PHP's strtotime. Among few alternatives I found date-util yields the best results.
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>
Date()
– sooo… same as new Date(strdate)
really… –
Forbore Maybe you can exploit a sample function like :
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;
`
For those looking to convert the datetime to unix timestamp, you can do this using the Moment
Library.
For Vue.js, you can do something like
let start = "2022/02/02 02:02:02";
return moment(start).format("x");
JavaScript itself does not have a function like PHP's strtotime()
to convert natural (English) language to a Date
object.
Therefore you need a library (or write something yourself). A library that is currently (2023) well maintained is Chrono: https://github.com/wanasit/chrono
I supports strings like "10 days after next Friday". A bonus of Chrono is that it also supports some other languages.
© 2022 - 2024 — McMap. All rights reserved.