কীভাবে তারিখকে টাইমস্ট্যাম্পে রূপান্তর করবেন?


165

আমি তারিখকে টাইমস্ট্যাম্পে রূপান্তর করতে চাই, আমার ইনপুট 26-02-2012। আমি ব্যবহার করতাম

new Date(myDate).getTime();

এটি এনএএন বলছে .. কেউ কীভাবে এটি রূপান্তর করতে পারে বলতে পারে?



আপনি ডেট.জেএস লাইব্রেরিটি একবার দেখে নিতে পারেন: ডেটজেএস.কম
আরএসবারো ২

1
আপনি কি ব্যবহার করেছেন Date(myDate).getTime()(আপনি কোড হিসাবে চিহ্নিত করেছেন), নাকি কোডটির অংশ হওয়ার আগে "নতুন" শব্দটি বোঝানো হয়েছিল? আপনি যত বেশি প্রচেষ্টা করবেন, উত্তরগুলি তত ভাল পাবেন।
টিজে ক্রাউডার

@ আরসবারো: বাদে এটি আর বজায় রাখা হবে বলে মনে হয় না (এবং এখানে অসামান্য বাগ রয়েছে)। যদিও মুহুর্তজেএসএস বেশ ভাল মনে হচ্ছে।
টিজে ক্রাউডার

@ টিজে ক্রাউডার আমি ডেট.জেএস ব্যবহার করেছি এবং এটির জন্য আমি যা প্রয়োজন তার জন্য এটি কাজ করেছে তবে আপনি ঠিক বলেছেন যে এটি কিছু সময় সক্রিয়ভাবে কাজ করে নি। আমি মুহুর্তগুলি পরীক্ষা করব। ধন্যবাদ!
আরএসবারো

উত্তর:


203
var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = myDate[1]+","+myDate[0]+","+myDate[2];
console.log(new Date(newDate).getTime());​

হালনাগাদ:

var myDate = "26-02-2012";
myDate = myDate.split("-");
var newDate = myDate[1]+"/"+myDate[0]+"/"+myDate[2];
console.log(new Date(newDate).getTime());

ডেমো (ক্রোম, এফএফ, অপেরা, আইই এবং সাফারি পরীক্ষিত)।


দুর্ভাগ্যক্রমে, এটি সাফারি 5 তে কাজ করে না, যেমন এটি ফিরে আসে NaN। সাফারিতে আপনাকে new Date(year, month, day);এই সম্ভাব্য অন্যান্য নির্মাণকারীর ব্যবহার করতে হবে , উদাহরণস্বরূপ:new Date(myDate[2], myDate[1], myDate[0]);
insertusernamehere

13
তারিখের স্ট্রিংটিকে "ইউরোপীয়" থেকে "আমেরিকান" ফর্ম্যাটে রূপান্তরিত করার পরিবর্তে এটি আইএসও 8601 ফর্ম্যাটে ( YYYY-MM-DD) রূপান্তর করা আরও ভাল , যা দ্বারা বোঝার গ্যারান্টিযুক্ত Date(), এবং সাধারণভাবে বলা হয়, তারিখের স্ট্রিংগুলির জন্য সবচেয়ে আন্তঃযোগাযোগ্য বিন্যাস।
ওয়াল্টার ট্রস

3
দ্রষ্টব্য: new Date(newDate).getTime()মিলিসেকেন্ড রেজোলিউশনে একটি টাইমস্ট্যাম্প তৈরি করবে।
h7r

3
সেকেন্ড ব্যবহারের জন্য: Math.floor(new Date(newDate).getTime() / 1000)
মেটাগামিকাম

54

এই ফাংশনটি ব্যবহার করে দেখুন, এটি ডেট পার্স () পদ্ধতি ব্যবহার করে এবং কোনও কাস্টম যুক্তির প্রয়োজন নেই:

function toTimestamp(strDate){
   var datum = Date.parse(strDate);
   return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));


24

এই রিফ্যাক্টর কোডটি এটি করবে

let toTimestamp = strDate => Date.parse(strDate)

এটি ie8- বাদে সমস্ত আধুনিক ব্রাউজারে কাজ করে


10

এখানে দুটি সমস্যা আছে। প্রথমত, আপনি কেবলমাত্র তারিখের উদাহরণে getTime কল করতে পারেন। আপনার ব্রেকেকেটে নতুন তারিখটি মোড়ানো বা পরিবর্তনশীলকে নির্ধারণ করা দরকার।

দ্বিতীয়ত, আপনাকে এটি একটি সঠিক ফর্ম্যাটে একটি স্ট্রিং পাস করতে হবে।

কাজের উদাহরণ:

(new Date("2012-02-26")).getTime();

1
তারিখ তাত্ক্ষণিক বন্ধনীতে মোড়ানো দরকার নেই। শুধুমাত্র একটি উপযুক্ত স্ট্রিং বিন্যাস প্রয়োজন।
maswerdna

5

আপনার কেবলমাত্র আপনার তারিখের অঙ্কটি বিপরীত করা এবং এর সাথে পরিবর্তন -করা দরকার ,:

 new Date(2012,01,26).getTime(); // 02 becomes 01 because getMonth() method returns the month (from 0 to 11)

তোমার ক্ষেত্রে:

 var myDate="26-02-2012";
 myDate=myDate.split("-");
 new Date(parseInt(myDate[2], 10), parseInt(myDate[1], 10) - 1 , parseInt(myDate[0]), 10).getTime();

পিএস ইউকে লোকালে এখানে কিছু যায় আসে না।


তারিখের ফর্ম্যাটটিও অবৈধ, এবং ক্রস ব্রাউজার এবং ক্রস-লোকালে নির্ভরযোগ্যভাবে কাজ করবে না (এটি উদাহরণস্বরূপ, ইউকে লোকেলের সাথে ক্রোমে আমার পক্ষে নয়)। আপনি যদি কোনও ফর্ম্যাট পরামর্শ দিতে চলেছেন তবে এমনটি প্রস্তাব করুন যা কার্যত ডকুমেন্টেড থাকে।
টিজে ক্রাউডার

আমি ডেভেলপার.মোজিলা.আর.ইন / জাভাস্ক্রিপ্ট / রেফারেন্স / গ্লোবাল_অবজেক্টস / ......... এর উদাহরণ পাই । আমি কেবল স্ট্রিংটি রেখে দিতে ভুলে গেছি। এখন এটা কাজ করছে.
এন্টোনজস

2
ঠিক আছে, কমপক্ষে এখন উপরের কোডটি একটি অবৈধ তারিখের ফর্ম্যাটটি ব্যবহার করছে না - এটি দুটি পৃথক কারণে কেবল ভুল তারিখ দিচ্ছে। উপরে আপনি 2 শে মার্চ, 2014 তারিখটি সংজ্ঞায়িত করেছেন (আপনার ক্ষেত্রের ক্রমটি গোলমেলে পড়েছে)। এবং ক্ষেত্রগুলি যদি সঠিক ক্রমে থাকে তবে আপনি 26 শে মার্চ , 2012 তারিখটি নির্ধারণ করবেন (মাসের মান শূন্য থেকে শুরু হবে)। তবে ওপির একটি স্ট্রিং রয়েছে, সংখ্যার একটি সিরিজ নয়, আপনি যদি এই সমস্যাগুলি সম্বোধন করেও এটি এতটা কার্যকর নয়।
টিজে ক্রাউডার

@ টিজে ক্রাউডার আপনার পরামর্শের জন্য ধন্যবাদ। আপনার কোডটি সংখ্যায় রূপান্তরিত করার কথা বলে আমি কোডটি ঠিক করেছি। Merci।
এন্টোনজস

2
প্রথম কোড উদাহরণটি এখনও ভুল , এবং Numberস্ট্রিংগুলি দিয়ে শুরু 0করা কিছু ইঞ্জিনের জন্য সমস্যাযুক্ত - parseIntএকটি রেডিক্স ব্যবহার এবং নির্দিষ্ট করে।
টিজে ক্রাউডার

5
function getTimeStamp() {
       var now = new Date();
       return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
                     + ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
                     .getSeconds()) : (now.getSeconds())));
}

4

(আইএসও) তারিখটিকে ইউনিক্স টাইমস্ট্যাম্পে রূপান্তর করতে , আমি টাইমস্ট্যাম্পের সাথে 3 টি অক্ষরের চেয়ে বেশি অক্ষরটি শেষ করেছি তাই আমার বছরটি কোথাও 50k এর কাছাকাছি ছিল ...

আমি এটি 1000 দ্বারা বিতরণ করতে হয়েছিল: new Date('2012-02-26').getTime() / 1000


3

যারা ফরমেটে পাঠযোগ্য টাইমস্ট্যাম্প রাখতে চান তাদের জন্য, yyyymmddHHMMSS

> (new Date()).toISOString().replace(/[^\d]/g,'')              // "20190220044724404"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -3) // "20190220044724"
> (new Date()).toISOString().replace(/[^\d]/g,'').slice(0, -9) // "20190220"

ব্যবহারের উদাহরণ: একটি ব্যাকআপ ফাইল এক্সটেনশান। /my/path/my.file.js.20190220


3

আপনি বর্তমান টাইমস্ট্যাম্পের সন্ধানে এখানে এসেছেন

  var date      = new Date();
  var timestamp = date.getTime();

TLDR:

new Date().getTime();
//console.log(new Date().getTime());

2

আপনার স্ট্রিং এমন বিন্যাসে নেই যা হ্যান্ডেলটি নির্দিষ্ট করারDate জন্য নির্দিষ্ট করা হয়েছে । আপনার নিজের এটি বিশ্লেষণ করতে হবে, ডেটজেএস বা পুরানো (যেমনটি আমি এখনও বলতে পারি) ডেটজেএস-এর মতো একটি তারিখ পার্সিং লাইব্রেরি ব্যবহার করতে হবে, বা পার্স করতে 2012-02-29বলার আগে এটিকে সঠিক বিন্যাসে (যেমন, ) ম্যাসেজ করতে Dateহবে ।

আপনি কেন পাচ্ছেন NaN: আপনি যখন new Date(...)কোনও অবৈধ স্ট্রিং পরিচালনা করতে বলেন , এটি এমন কোনও Dateবস্তু ফেরত দেয় যা একটি অবৈধ তারিখকে ( new Date("29-02-2012").toString()রিটার্ন "Invalid date") সেট করা থাকে । getTime()এই রাজ্যে একটি তারিখ অবজেক্টটিতে কল করা ফিরবে NaN


@ বেনভেডস: দুর্দান্ত, ধন্যবাদ যদিও আমি মন্তব্যটি "এছাড়াও, এটি ডিওএমের পক্ষে অ-ধ্বংসাত্মক" কিছুটা অদ্ভুত বলে মনে করি ... আমি তাদের প্রত্যাশা করেছিলাম যে তারা বোঝাতে চেয়েছিল যে এটি Dateবস্তুটি পরিবর্তন করে না (যার সাথে ডোমের সাথে কোনও সম্পর্ক নেই)।
টিজে ক্রাউডার

2
/**
 * Date to timestamp
 * @param  string template
 * @param  string date
 * @return string
 * @example         datetotime("d-m-Y", "26-02-2012") return 1330207200000
 */
function datetotime(template, date){
    date = date.split( template[1] );
    template = template.split( template[1] );
    date = date[ template.indexOf('m') ]
        + "/" + date[ template.indexOf('d') ]
        + "/" + date[ template.indexOf('Y') ];

    return (new Date(date).getTime());
}

0

উত্তরগুলি অন্য বিকাশকারীদের দ্বারা সরবরাহ করা হয়েছে তবে আমার নিজস্ব উপায়ে, আপনি কোনও ব্যবহারকারী নির্ধারিত ফাংশন তৈরি না করে ফ্লাইতে এটি করতে পারেন:

var timestamp = Date.parse("26-02-2012".split('-').reverse().join('-'));
alert(timestamp); // returns 1330214400000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.