जावास्क्रिप्ट का php के स्ट्रैटोटाइम () के बराबर?


83

PHP में, आप आसानी से एक अंग्रेजी टेक्स्टुअल डेटाइम विवरण को उचित तिथि में बदल सकते हैं strtotime()

क्या जावास्क्रिप्ट में भी ऐसा ही कुछ है?


प्रारूप dd.mm.yyy से पार्स करने के लिए, stackoverflow.com/questions/1576753/…
वैलेंटाइन

जवाबों:


52

मुझे यह लेख मिला और मैंने ट्यूटोरियल की कोशिश की। मूल रूप से, आप एक तारीख को पार्स करने के लिए डेट कंस्ट्रक्टर का उपयोग कर सकते हैं, फिर getTime()विधि से सेकंड प्राप्त करें लिख सकते हैं

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

क्या यह काम करता है?


ऐसा लगता है कि मैं यह काम नहीं करता कि यह तिथि dmY प्रारूप में स्वरूपित है।
वैलेंटाइन देसपा

30
-1। यह केवल RFC 822 या ISO 8601 स्वरूपित तिथियों strtotime()को शामिल करता है, लेकिन कई अन्य स्वरूपों का समर्थन करता है।
जेक

1
यह ओपी के उपयोग के मामले को संतुष्ट करने के लिए हो सकता है, लेकिन यह तकनीकी रूप से गलत, प्रश्न का अमान्य उत्तर है। देखें (और कृपया आगे बढ़ें) Westy92 का जवाब।
नैट एबेल

68

हाँ यही है। और यह सभी प्रमुख ब्राउज़र में समर्थित है:

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

अंतर केवल इतना है कि यह फ़ंक्शन सेकंड के बजाय मिलीसेकंड देता है, इसलिए आपको परिणाम को 1000 से विभाजित करने की आवश्यकता है।

जाँच करें कि क्या मान्य प्रारूप जावास्क्रिप्ट पार्स कर सकते हैं।


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
धन्यवाद @ अर्नलडो यह मेरे लिए काम कर रहा है। आपका जवाब "जिचेलोन" से अधिक स्वीकार्य है
आदि

यह काम करना चाहिए, लेकिन यह अविश्वसनीय है। Date.parse ('2020-06-06') को Date.parse ('6 जून, 2020') के समान टाइमस्टैम्प वापस करना चाहिए, लेकिन यह नहीं है। (1591401600000 बनाम 1591423200000)
विंसेंट

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
मुझे आमतौर पर ऐसे उत्तर पसंद नहीं हैं जो सिर्फ पुस्तकालयों के लिए लिंक हैं, लेकिन इस मामले में चूंकि जावास्क्रिप्ट स्ट्रेटटाइम के रूप में लगभग पागल मामलों को नहीं संभालता है इसलिए यह एक शानदार उत्तर है। धन्यवाद!
Fusty

लोकेटस की नवीनतम रिलीज (इस समय 7 सितंबर 2018) 'कल 19:00' की तरह तार को संभालती नहीं है।
निकोलस

4

मैं php में स्ट्रेटोटाइम () से ईर्ष्या करता हूं, लेकिन मैं पल का उपयोग करके जावास्क्रिप्ट में मेरा करता हूं। 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

यह पूरी तरह से सवाल का जवाब नहीं देता है (और एक नकारात्मक स्कोर है)। क्या इनाम को रद्द करने का कोई तरीका है?
वेस्टीहॉन

0

ऐसे कुछ मॉड्यूल हैं जो समान व्यवहार प्रदान करते हैं, लेकिन बिल्कुल PHP के स्ट्रेटोटाइम की तरह नहीं। कुछ विकल्पों में से मैंने पाया कि तारीख-उपयोग सर्वोत्तम परिणाम देता है।


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>


पदावनति चेतावनी: प्रदान किया गया मान किसी मान्यताप्राप्त आईएसओ प्रारूप में नहीं है। पल निर्माण 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;

`

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.