আমি ইউনিক্স টাইমস্ট্যাম্প হিসাবে একটি মাইএসকিউএল ডাটাবেসে সময় সঞ্চয় করছি এবং এটি কিছু জাভাস্ক্রিপ্ট কোডে প্রেরণ করা হবে। আমি এর থেকে ঠিক সময়টি কীভাবে পাব?
উদাহরণস্বরূপ, এইচএইচ / এমএম / এসএস ফর্ম্যাটে।
আমি ইউনিক্স টাইমস্ট্যাম্প হিসাবে একটি মাইএসকিউএল ডাটাবেসে সময় সঞ্চয় করছি এবং এটি কিছু জাভাস্ক্রিপ্ট কোডে প্রেরণ করা হবে। আমি এর থেকে ঠিক সময়টি কীভাবে পাব?
উদাহরণস্বরূপ, এইচএইচ / এমএম / এসএস ফর্ম্যাটে।
উত্তর:
let unix_timestamp = 1549312452
// Create a new JavaScript Date object based on the timestamp
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
var date = new Date(unix_timestamp * 1000);
// Hours part from the timestamp
var hours = date.getHours();
// Minutes part from the timestamp
var minutes = "0" + date.getMinutes();
// Seconds part from the timestamp
var seconds = "0" + date.getSeconds();
// Will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
console.log(formattedTime);
তারিখ অবজেক্ট সম্পর্কিত আরও তথ্যের জন্য, দয়া করে MDN বা ECMAScript 5 স্পেসিফিকেশন দেখুন ।
function timeConverter(UNIX_timestamp){
var a = new Date(UNIX_timestamp * 1000);
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var year = a.getFullYear();
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours();
var min = a.getMinutes();
var sec = a.getSeconds();
var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
return time;
}
console.log(timeConverter(0));
var min = a.getMinutes() < 10 ? '0' + a.getMinutes() : a.getMinutes(); var sec = a.getSeconds() < 10 ? '0' + a.getSeconds() : a.getSeconds();
getMonth()
0 থেকে 11 এর মধ্যে এক মাসের সংখ্যা ফেরত দেয়, সুতরাং a.getMonth() - 1
এটি ভুল।
জাভাস্ক্রিপ্ট মিলিসেকেন্ডে কাজ করে, তাই আপনাকে প্রথমে ইউনিক্স টাইমস্ট্যাম্পটি সেকেন্ড থেকে মিলিসেকেন্ডে রূপান্তর করতে হবে।
var date = new Date(UNIX_Timestamp * 1000);
// Manipulate JavaScript Date object here...
আমি জ্যাকব রাইটের Date.format()
লাইব্রেরির আংশিক , যা পিএইচপি date()
ফাংশনের স্টাইলে জাভাস্ক্রিপ্টের তারিখের ফর্ম্যাটিং প্রয়োগ করে ।
new Date(unix_timestamp * 1000).format('h:i:s')
format is not a function
। কিন্তু এই দৃশ্যত কাজ করে: stackoverflow.com/a/34015511/7550772
ব্যবহার করুন:
var s = new Date(1504095567183).toLocaleDateString("en-US")
console.log(s)
// expected output "8/30/2017"
এবং সময়ের জন্য:
var s = new Date(1504095567183).toLocaleTimeString("en-US")
console.log(s)
// expected output "3:19:27 PM"
toLocaleString
তারিখ এবং সময় উভয়ই অন্তর্ভুক্ত।
এখানে সেকেন্ডে বিন্যাস করার জন্য সংক্ষিপ্ত ওয়ান-লাইনারের সমাধানটি রয়েছে hh:mm:ss
:
/**
* Convert seconds to time string (hh:mm:ss).
*
* @param Number s
*
* @return String
*/
function time(s) {
return new Date(s * 1e3).toISOString().slice(-13, -5);
}
console.log( time(12345) ); // "03:25:45"
পদ্ধতিটি
Date.prototype.toISOString()
সরলীকৃত বর্ধিত আইএসও 8601 ফর্ম্যাটে সময় দেয় যা সর্বদা 24 বা 27 অক্ষর দীর্ঘ (যেমনYYYY-MM-DDTHH:mm:ss.sssZ
বা±YYYYYY-MM-DDTHH:mm:ss.sssZ
যথাক্রমে)। সময় অঞ্চলটি সর্বদা শূন্য ইউটিসি অফসেট থাকে।
এনবি: এই সমাধানটির জন্য কোনও তৃতীয় পক্ষের লাইব্রেরি প্রয়োজন হয় না এবং সমস্ত আধুনিক ব্রাউজার এবং জাভাস্ক্রিপ্ট ইঞ্জিনগুলিতে সমর্থিত।
toTimeString
সময় অঞ্চলগুলির সাথে ভাল কাজ করছিলেন না। দুর্ভাগ্যক্রমে আপনার সম্পাদনাটি দেখার আগে তা প্রত্যাখ্যান করা হয়েছিল। যাইহোক, আমি toISOString
পরিবর্তে ব্যবহার করার পরামর্শ দেব , যেহেতু toGMTString
অবহেলিত এবং বিভিন্ন প্ল্যাটফর্মগুলিতে বিভিন্ন ফলাফল আসতে পারে।
আমি momentjs.com এর মতো একটি লাইব্রেরি ব্যবহার করার বিষয়ে চিন্তা করব , যা এটি সত্যই সহজ করে তুলেছে :
ইউনিক্স টাইমস্ট্যাম্পের ভিত্তিতে:
var timestamp = moment.unix(1293683278);
console.log( timestamp.format("HH/mm/ss") );
একটি মাইএসকিউএল তারিখের স্ট্রিংয়ের উপর ভিত্তি করে:
var now = moment("2010-10-10 12:03:15");
console.log( now.format("HH/mm/ss") );
console.log
উদাহরণগুলিতে আমি এর কারণে ফর্ম্যাটটি সম্পর্কে বিভ্রান্ত হয়ে পড়েছিলাম /
তবে এটি আমাকে অনেক সাহায্য করেছিল।
UNIX টাইমস্ট্যাম্পটি 1 জানুয়ারী, 1970 কে ইউটিসি থেকে 00:00:00 সাল থেকে সেকেন্ডের ( উইকিপিডিয়া অনুসারে )।
জাভাস্ক্রিপ্টে তারিখ অবজেক্টের আর্গুমেন্টটি 1 জানুয়ারী, 1970 কে ইউটিসি থেকে 00:00:00 সাল থেকে মিলি সেকেন্ডের সংখ্যা ( ডাব্লু 3 স্কুলস জাভাস্ক্রিপ্ট ডকুমেন্টেশন অনুসারে )।
উদাহরণস্বরূপ নীচের কোডটি দেখুন:
function tm(unix_tm) {
var dt = new Date(unix_tm*1000);
document.writeln(dt.getHours() + '/' + dt.getMinutes() + '/' + dt.getSeconds() + ' -- ' + dt + '<br>');
}
tm(60);
tm(86400);
দেয়:
1/1/0 -- Thu Jan 01 1970 01:01:00 GMT+0100 (Central European Standard Time)
1/0/0 -- Fri Jan 02 1970 01:00:00 GMT+0100 (Central European Standard Time)
hh: মিমি: এসএস: ভেরিয়েন্ট হিসাবে সেকেন্ড বিন্যাসে সংক্ষিপ্ততম এক-লাইনারের সমাধান
console.log(new Date(1549312452 * 1000).toISOString().slice(0, 19).replace('T', ' '));
// "2019-02-04 20:34:12"
মোমেন্ট.জেএস ব্যবহার করে আপনি এর মতো সময় এবং তারিখ পেতে পারেন:
var dateTimeString = moment(1439198499).format("DD-MM-YYYY HH:mm:ss");
এবং আপনি এটি ব্যবহার করে কেবল সময় পেতে পারেন:
var timeString = moment(1439198499).format("HH:mm:ss");
পূর্বোক্ত সমাধানগুলির সাথে সমস্যাটি হ'ল, যদি ঘন্টা, মিনিট বা সেকেন্ডের একটি মাত্র অঙ্ক থাকে (যেমন 0-9) তবে সময়টি ভুল হতে পারে, উদাহরণস্বরূপ এটি 2: 3: 9 হতে পারে তবে এটি বরং 02 হওয়া উচিত: 03:09।
এই পৃষ্ঠা অনুসারে এটি তারিখের "টু লোকলেটাইমস্ট্রিং" পদ্ধতিটি ব্যবহার করার জন্য আরও ভাল সমাধান বলে মনে হচ্ছে।
date.toLocaleTimeString()
অন্য উপায় - একটি আইএসও 8601 তারিখ থেকে।
var timestamp = 1293683278;
var date = new Date(timestamp * 1000);
var iso = date.toISOString().match(/(\d{2}:\d{2}:\d{2})/)
alert(iso[1]);
@ শমরাটের উত্তরের ভিত্তিতে, এখানে একটি স্নিপেট রয়েছে যা স্বয়ংক্রিয়ভাবে এইভাবে ডেটটাইম লিখবে (উত্তরের জন্য স্ট্যাকওভারফ্লোয়ের তারিখের সাথে কিছুটা অনুরূপ answered Nov 6 '16 at 11:51
:):
today, 11:23
অথবা
yersterday, 11:23
বা (যদি আজকের চেয়ে আলাদা তবে একই বছর)
6 Nov, 11:23
বা (আজকের তুলনায় অন্য কোনও বছর হলে)
6 Nov 2016, 11:23
function timeConverter(t) {
var a = new Date(t * 1000);
var today = new Date();
var yesterday = new Date(Date.now() - 86400000);
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var year = a.getFullYear();
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours();
var min = a.getMinutes();
if (a.setHours(0,0,0,0) == today.setHours(0,0,0,0))
return 'today, ' + hour + ':' + min;
else if (a.setHours(0,0,0,0) == yesterday.setHours(0,0,0,0))
return 'yesterday, ' + hour + ':' + min;
else if (year == today.getFullYear())
return date + ' ' + month + ', ' + hour + ':' + min;
else
return date + ' ' + month + ' ' + year + ', ' + hour + ':' + min;
}
যে আধুনিক সমাধানটির জন্য 40 কেবি লাইব্রেরির প্রয়োজন নেই:
তারিখ / সময় বিন্যাস করার জন্য ইনটল.ডেটটাইম ফর্ম্যাট হ'ল অ-সাংস্কৃতিকভাবে সাম্রাজ্যবাদী উপায়।
// Setup once
var options = {
//weekday: 'long',
//month: 'short',
//year: 'numeric',
//day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
},
intlDate = new Intl.DateTimeFormat( undefined, options );
// Reusable formatter
var timeStamp = 1412743273;
console.log( intlDate.format( new Date( 1000 * timeStamp ) ) );
আমার টাইমস্ট্যাম্পটি পিএইচপি ব্যাকএন্ড থেকে নেওয়া হচ্ছে। আমি উপরের সমস্ত পদ্ধতি চেষ্টা করেছিলাম এবং এটি কার্যকর হয়নি। আমি তখন একটি টিউটোরিয়াল জুড়ে এসেছি যা কাজ করেছিল:
var d =val.timestamp;
var date=new Date(+d); //NB: use + before variable name
console.log(d);
console.log(date.toDateString());
console.log(date.getFullYear());
console.log(date.getMinutes());
console.log(date.getSeconds());
console.log(date.getHours());
console.log(date.toLocaleTimeString());
উপরের পদ্ধতিগুলি এই ফলাফলগুলি তৈরি করবে
1541415288860
Mon Nov 05 2018
2018
54
48
13
1:54:48 PM
এমন অনেকগুলি পদ্ধতি রয়েছে যা টাইমস্ট্যাম্পগুলির সাথে নিখুঁতভাবে কাজ করে। তাদের সব তালিকা
function getTIMESTAMP() {
var date = new Date();
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).substr(-2);
var day = ("0" + date.getDate()).substr(-2);
var hour = ("0" + date.getHours()).substr(-2);
var minutes = ("0" + date.getMinutes()).substr(-2);
var seconds = ("0" + date.getSeconds()).substr(-2);
return year + "-" + month + "-" + day + " " + hour + ":" + minutes + ":" + seconds;
}
//2016-01-14 02:40:01
কিছু উত্তর সহ শূন্য সমস্যার দিকে মনোযোগ দিন। উদাহরণস্বরূপ, টাইমস্ট্যাম্পটি 1439329773
ভুলভাবে রূপান্তরিত হবে12/08/2015 0:49
।
আমি এই সমস্যাটি কাটিয়ে উঠতে নিম্নলিখিতটি ব্যবহার করার পরামর্শ দেব:
var timestamp = 1439329773; // replace your timestamp
var date = new Date(timestamp * 1000);
var formattedDate = ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);
console.log(formattedDate);
এখন ফলাফল:
12/08/2015 00:49
// Format value as two digits 0 => 00, 1 => 01
function twoDigits(value) {
if(value < 10) {
return '0' + value;
}
return value;
}
var date = new Date(unix_timestamp*1000);
// display in format HH:MM:SS
var formattedTime = twoDigits(date.getHours())
+ ':' + twoDigits(date.getMinutes())
+ ':' + twoDigits(date.getSeconds());
দেখুন / পর্ব কনভার্টার তারিখ ।
আপনার প্রয়োজন ParseInt
, অন্যথায় এটি কাজ করবে না:
if (!window.a)
window.a = new Date();
var mEpoch = parseInt(UNIX_timestamp);
if (mEpoch < 10000000000)
mEpoch *= 1000;
------
a.setTime(mEpoch);
var year = a.getFullYear();
...
return time;
আপনার টাইমস্ট্যাম্পটিকে HH:MM:SS
ফর্ম্যাটে রূপান্তর করতে আপনি নীচের ফাংশনটি ব্যবহার করতে পারেন :
var convertTime = function(timestamp, separator) {
var pad = function(input) {return input < 10 ? "0" + input : input;};
var date = timestamp ? new Date(timestamp * 1000) : new Date();
return [
pad(date.getHours()),
pad(date.getMinutes()),
pad(date.getSeconds())
].join(typeof separator !== 'undefined' ? separator : ':' );
}
বিভাজকটি পাস না করে :
এটি (ডিফল্ট) বিভাজক হিসাবে ব্যবহার করে:
time = convertTime(1061351153); // --> OUTPUT = 05:45:53
আপনি যদি পৃথক /
হিসাবে ব্যবহার করতে চান তবে এটি দ্বিতীয় প্যারামিটার হিসাবে পাস করুন:
time = convertTime(920535115, '/'); // --> OUTPUT = 09/11/55
var convertTime = function(timestamp, separator) {
var pad = function(input) {return input < 10 ? "0" + input : input;};
var date = timestamp ? new Date(timestamp * 1000) : new Date();
return [
pad(date.getHours()),
pad(date.getMinutes()),
pad(date.getSeconds())
].join(typeof separator !== 'undefined' ? separator : ':' );
}
document.body.innerHTML = '<pre>' + JSON.stringify({
920535115 : convertTime(920535115, '/'),
1061351153 : convertTime(1061351153, ':'),
1435651350 : convertTime(1435651350, '-'),
1487938926 : convertTime(1487938926),
1555135551 : convertTime(1555135551, '.')
}, null, '\t') + '</pre>';
আরও দেখুন এই বেহালার ।
function getDateTimeFromTimestamp(unixTimeStamp) {
var date = new Date(unixTimeStamp);
return ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);
}
var myTime = getDateTimeFromTimestamp(1435986900000);
console.log(myTime); // output 01/05/2000 11:00
আপনি যদি ইউনিক্সের সময়কালকে আসল ঘন্টা, মিনিট এবং সেকেন্ডে রূপান্তর করতে চান তবে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:
var hours = Math.floor(timestamp / 60 / 60);
var minutes = Math.floor((timestamp - hours * 60 * 60) / 60);
var seconds = Math.floor(timestamp - hours * 60 * 60 - minutes * 60 );
var duration = hours + ':' + minutes + ':' + seconds;
function getDateTime(unixTimeStamp) {
var d = new Date(unixTimeStamp);
var h = (d.getHours().toString().length == 1) ? ('0' + d.getHours()) : d.getHours();
var m = (d.getMinutes().toString().length == 1) ? ('0' + d.getMinutes()) : d.getMinutes();
var s = (d.getSeconds().toString().length == 1) ? ('0' + d.getSeconds()) : d.getSeconds();
var time = h + '/' + m + '/' + s;
return time;
}
var myTime = getDateTime(1435986900000);
console.log(myTime); // output 01/15/00
নীচের কোডটি 3-অঙ্কের মিলিসেকও সরবরাহ করে, কনসোল লগ উপসর্গের জন্য আদর্শ:
const timeStrGet = date => {
const milliSecsStr = date.getMilliseconds().toString().padStart(3, '0') ;
return `${date.toLocaleTimeString('it-US')}.${milliSecsStr}`;
};
setInterval(() => console.log(timeStrGet(new Date())), 299);
টাইমস্ট্যাম্পগুলি জেএসে তারিখের স্ট্রিংয়ে রূপান্তর করুন
moment().format('YYYY-MM-DD hh:mm:ss');
// "2020-01-10 11:55:43"
moment(1578478211000).format('YYYY-MM-DD hh:mm:ss');
// "2020-01-08 06:10:11"
day.js
github.com/iamkun/dayjs
@ অ্যারন দ্বারা প্রদত্ত উত্তরটি কাজ করে তবে এটি আমার পক্ষে কার্যকর হয়নি কারণ আমি 1980 থেকে শুরু করে টাইমস্ট্যাম্পকে রূপান্তর করার চেষ্টা করছিলাম So সুতরাং আমি নীচে কয়েকটি পরিবর্তন করেছি
function ConvertUnixTimeToDateForLeap(UNIX_Timestamp) {
var dateObj = new Date(1980, 0, 1, 0, 0, 0, 0);
dateObj.setSeconds(dateObj.getSeconds() + UNIX_Timestamp);
return dateObj;
}
document.body.innerHTML = 'TimeStamp : ' + ConvertUnixTimeToDateForLeap(1269700200);
সুতরাং আপনার যদি অন্য দশক বা তার বেশি সময় থেকে শুরু হওয়া টাইমস্ট্যাম্প থাকে তবে কেবল এটি ব্যবহার করুন। এটি আমার জন্য অনেক মাথা ব্যাথা বাঁচিয়েছিল।