এইচএইচ: এমএম: এসএস স্ট্রিংটি কেবল জাভাস্ক্রিপ্টে সেকেন্ডে রূপান্তর করুন


99

আমার এটির মতো প্রয়োজনীয়তা রয়েছে: এইচএইচ: এমএম: এসএস ফর্ম্যাটটিতে কেবলমাত্র সেকেন্ডে রূপান্তর করুন?

তবে জাভাস্ক্রিপ্টে। আমি সেকেন্ডকে বিভিন্ন ফর্ম্যাটে রূপান্তর করার অনেক উদাহরণ দেখেছি কিন্তু এইচএইচ: এমএম: এসএসকে সেকেন্ডে রূপান্তর করি না। কোন সাহায্য প্রশংসা করা হবে।


উফ .. টাইপোর জন্য দুঃখিত হ্যাঁ, এটি সময় hh: মিমি: এসএস
শ্রী রেড্ডি

কি DDমধ্যে HH:MM:DD?
ব্রায়ান ড্রিসকল

4
এটি সেই পিএইচপি প্রশ্নের মত একই অ্যালগরিদম।
স্কোথেল্কেল

আচ্ছা .. এইচ (আওয়ার) == 3600 সেকেন্ড, এম (মিনিট) == 60 সেকেন্ড ... তাই ..
মিল্কিওয়েজ

4
আমি যে সমাধানটিই মনে করি তা হ'ল অ্যারেগুলিতে স্ট্রিংটি বিভক্ত করা এবং তারপরে ঘন্টা 3600 থেকে গুণিত করা এবং 60 থেকে মিনিটে গুণ করা এবং সেকেন্ডের অংশের সাথে সমস্ত যোগ করা। এটি কি সহজ সমাধান?
শ্রী রেড্ডি

উত্তর:


194

এটা চেষ্টা কর:

var hms = '02:04:33';   // your input string
var a = hms.split(':'); // split it at the colons

// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 

console.log(seconds);

4
এটির একটি প্রোটোটাইপ সংস্করণ এখানে! String.prototype.toSeconds = function () { if (!this) return null; var hms = this.split(':'); return (+hms[0]) * 60 * 60 + (+hms[1]) * 60 + (+hms[2] || 0); } দ্রষ্টব্য: || 0এই কোডটি কার্যকর করার জন্য শেষ পর্যন্ত ভাল - এটি এইচএইচ-এর (এখনও বৈধ) সময় উপস্থাপনের সাথে সমস্যাগুলি প্রতিরোধ করে: এমএম (ক্রোম টাইপ = "সময়" ইনপুটগুলি এই ফর্ম্যাটে সেকেন্ড = 0 হলে আউটপুট আসবে)।
ফতেহ খালসা

দারুণ স্টাফ ডুড
এডি

আমি শুধু আছে hh:mmনা secondsএই ক্ষেত্রে আমি কি পরিবর্তন করতে আছে ..?
মিঃ ওয়ার্ল্ড ওয়াইড

4
@ আবদুল ওয়াহেদ এই লাইনটি পরিবর্তন করুন: var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); থেকেvar seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60;
রোভা

4
সংখ্যার স্ট্রিংকে সংখ্যায় রূপান্তর করতে "+" অপারেটরের ব্যবহার কোনও ভাল ধারণা নয়। এটি সংক্ষিপ্ত এবং "চালাক" দেখাচ্ছে তবে এটি বিভ্রান্তিকর এবং পরিষ্কার কোড নয়। পরিবর্তে পার্সিয়ান্ট (এক্স, 10) ব্যবহার করুন। এবং ওয়ান-লাইনার এড়িয়ে চলুন। অপরিবর্তিত ইনপুট দ্বারা ত্রুটিগুলি প্রতিরোধ করুন। উদাহরণস্বরূপ: এটি স্ট্রিং নয়, এর কোনও ":" বা কেবল "এইচএইচ: এমএম" নেই। ইত্যাদি
ডোমিনিক

68

এই ফাংশনটি "এইচএইচ: এমএম: এসএস" পাশাপাশি "এমএম: এসএস" বা "এসএস" পরিচালনা করে।

function hmsToSecondsOnly(str) {
    var p = str.split(':'),
        s = 0, m = 1;

    while (p.length > 0) {
        s += m * parseInt(p.pop(), 10);
        m *= 60;
    }

    return s;
}

খুব ভাল, যদি সময়টি যে কোনও বিন্যাসে আসে প্রয়োজনের জন্য আসে তবে আমি এটি রাখব। ধন্যবাদ!
শ্রী রেড্ডি

আমার পক্ষে এখন পর্যন্ত সেরা উত্তর
রেজওয়ান আজফার হালিম

এই উত্তরটি দরকারী
মাইক অ্যারন

কেবলমাত্র 'এইচএইচ: এমএম' ফর্ম্যাটে ব্যবহার করার জন্য আপনার
ফাংশনটিতে

39

নিম্নলিখিতগুলির সাথে এটি বেশ দৃili়তার সাথে করা যেতে পারে:

'01:02:03'.split(':').reduce((acc,time) => (60 * acc) + +time);

কারণ ঘন্টা, মিনিট এবং সেকেন্ডের মধ্যে সময়ের প্রতিটি ইউনিট ছোট ইউনিটের চেয়ে 60 এর বেশি একাধিক। সময়টিকে ঘন্টা মিনিট এবং সেকেন্ডের উপাদানগুলিতে বিভক্ত করা হয়, তারপরে প্রতিটি ইউনিটের মধ্য দিয়ে যাওয়ার সাথে সাথে উচ্চতর ইউনিটগুলির সঞ্চিত মান ব্যবহার করে সেকেন্ডে হ্রাস হয়।

+timeএকটি সংখ্যা সময় কাস্ট করার জন্য ব্যবহার করা হয়।

এটি মূলত: (60 * ((60 * HHHH) + MM)) + SS

যদি কেবলমাত্র কয়েক সেকেন্ড উত্তীর্ণ হয় তবে ফলাফলটি একটি স্ট্রিং হয়ে যায়, যাতে স্থির করতে আমরা পুরো ফলাফলটি কোনও int- তে ফেলে দিতে পারি:

+('03'.split(':').reduce((acc,time) => (60 * acc) + +time));

প্রকৃতপক্ষে খুব জঘন্য চতুর ... প্রশ্ন এটি একটি গণনার সাথে তুলনা করা কত দ্রুত
ThatBrianDude

4
হ্যাঁ এটি চালাক, তবে কোনও ব্যবহারিক লাভের জন্য কোড বজায় রাখা কঠিন তৈরির একটি ভাল উদাহরণ। স্বীকৃত উত্তরের একটি ক্ষুদ্রাকরণ সংস্করণ বনাম যখন এটি 4 টি অক্ষর সংরক্ষণ করে। অনেক ওয়েব পৃষ্ঠাগুলি এখন 1 এমবি-র বেশি, এটি সঞ্চয় তুচ্ছের চেয়ে কিছুটা কম।
রবজি

4
যদিও এই উত্তরটি বোধগম্য নয় তবুও এটি উভয়র HH:MM:SSপাশাপাশি মনোযোগ সহকারে পরিচালনা করে MM:SS, যদিও গৃহীত উত্তরটি তা দেয় না।
ckeeney

4
এটির মধ্যে একটি ধরণের রূপান্তর বাগ রয়েছে, যদি সেখানে কেবল সেকেন্ডের অংশ দেওয়া হয়। মেমোটি প্রতিরোধ করতে আপনাকে 0 দিয়ে স্পষ্টভাবে সূচনা করতে হবে। কাজগুলি: '03'.split(':').reduce((acc,time) => (60 * acc) + +time, 0);ব্যর্থ কারণ একটি অপ্রত্যাশিত স্ট্রিং ফেরত:'03'.split(':').reduce((acc,time) => (60 * acc) + +time);
ফেলিক্স গার্টজ

@ ফেলিক্সগার্টজ ভালভাবে চিহ্নিত, আমি এই মামলার জন্য একটি সংশোধন করব।
পল

13

যেহেতু ডেট অবজেক্টের গেটটাইম ফাংশন 1970/01/01 সাল থেকে মিলি সেকেন্ড পায়, আমরা এটি করতে পারি:

var time = '12:23:00';
var seconds = new Date('1970-01-01T' + time + 'Z').getTime() / 1000;

4
ঠিক বুঝতে পেরেছি, এটি দিবালোকের সঞ্চয়ের সময় নিয়ে কাজ করে না। আসল তারিখটি ব্যবহার করা দরকার
ইয়াবলারগো

4
ধন্যবাদ ইয়াবার্গো পূর্ববর্তী সংস্করণ স্থানীয় টাইমজোনটির সাথে খুব ভাল কাজ করে না, তাই আমি এএসও 8601 ইউটিসি ডেটটাইম ফর্ম্যাটটি ব্যবহার করার জন্য এটি সম্পাদনা করেছি।
বোসকপ

13

hh:mm:ssস্ট্রিংটিকে এক লাইনে সেকেন্ডে রূপান্তর করুন । এছাড়াও অনুমতি h:m:sবিন্যাস এবং mm:ss, m:sইত্যাদি

'08:45:20'.split(':').reverse().reduce((prev, curr, i) => prev + curr*Math.pow(60, i), 0)

4
দয়া করে আপনার উত্তরটি ব্যাখ্যা করুন
B001 ᛦ

hh:mm:ssস্ট্রিংটিকে এক লাইনে সেকেন্ডে রূপান্তর করুন । এছাড়াও অনুমতি h:m:sবিন্যাস এবং mm:ss, m:sইত্যাদি
পল লুকান

চমৎকার উত্তর! তবে আপনি এড়িয়ে যেতে পারেন reverse(): '00: 01: 11'.স্প্লিট (':') reduce ) === 71
সিএমআর

@ সিএমআর, আকর্ষণীয় এপ্রোচ, তবে mm:ssএটির ক্ষেত্রে সঠিকভাবে কাজ করবে না।
পল লুকান

ম্যাথ.পোও খুব ধীর এবং কমে
যাওয়ার


5

জাভাস্ক্রিপ্টের স্থিত পদ্ধতিটি Date.UTC()কৌশলটি করে:

alert(getSeconds('00:22:17'));

function getSeconds(time)
{
    var ts = time.split(':');
    return Date.UTC(1970, 0, 1, ts[0], ts[1], ts[2]) / 1000;
}

4

আসল অনুমোদিত উত্তরের জন্য এখানে সম্ভবত আরও কিছু পাঠযোগ্য ফর্ম form

const getSeconds = (hms: string) : number => {
  const [hours, minutes, seconds] = hms.split(':');
  return (+hours) * 60 * 60 + (+minutes) * 60 + (+seconds);
};

2
new Date(moment('23:04:33', "HH:mm")).getTime()

আউটপুট: 1499755980000 (মিলিসেকেন্ডে) (1499755980000/1000) (দ্বিতীয়)

দ্রষ্টব্য: এই আউটপুটটি গণনা করা এখন থেকে ১৯ 1970০-০১-২০১১ 12: 0: 0 থেকে পৃথক হয়েছে এবং আমাদের moment.js বাস্তবায়ন করতে হবে


ওপি সেকেন্ডের জন্য মিলিসেকেন্ডের জন্য নয়
ব্যবহারকারী 729100

হাই ইউজার 72990000, আপনার মন্তব্যের জন্য আমি আমার উত্তর আপডেট করব, যাতে আমাদের 1000 দিয়ে বিভাজন প্রয়োজন
ITSDEv

1

এই ফাংশন এমএম: এসএসের জন্যও কাজ করে:

const convertTime = (hms) => {
        if (hms.length <3){
         return hms
        } else if (hms.length <6){
          const a = hms.split(':')
          return hms = (+a[0]) * 60 + (+a[1])
        } else {
          const a = hms.split(':')
          return hms = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2])
        }
      }


1

পল https://stackoverflow.com/a/45292588/1191101 দ্বারা প্রদত্ত সমাধান থেকে নেওয়া হয়েছে তবে পুরানো ফাংশন স্বরলিপি ব্যবহার করে যাতে এটি অন্যান্য জেএস ইঞ্জিনেও ব্যবহার করা যায় (যেমন জাভা রাইনো)

function strToSeconds (stime)
{
   return +(stime.split(':').reduce(function (acc,time) { return +(60 * acc) + +time }));
}

বা এটি কেবল আরও একটি পাঠযোগ্য

function strToSeconds (stime)
{
  var tt = stime.split(':').reverse ();
  return ((tt.length >= 3) ? (+tt[2]): 0)*60*60 + 
         ((tt.length >= 2) ? (+tt[1]): 0)*60 + 
         ((tt.length >= 1) ? (+tt[0]): 0);
}

0

function parsehhmmsst(arg) {
	var result = 0, arr = arg.split(':')
	if (arr[0] < 12) {
		result = arr[0] * 3600 // hours
	}
	result += arr[1] * 60 // minutes
	result += parseInt(arr[2]) // seconds
	if (arg.indexOf('P') > -1) {  // 8:00 PM > 8:00 AM
		result += 43200
	}
	return result
}
$('body').append(parsehhmmsst('12:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('1:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('2:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('3:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('4:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('5:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('6:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('7:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('8:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('9:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('10:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('11:00:00 AM') + '<br>')
$('body').append(parsehhmmsst('12:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('1:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('2:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('3:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('4:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('5:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('6:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('7:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('8:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('9:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('10:00:00 PM') + '<br>')
$('body').append(parsehhmmsst('11:00:00 PM') + '<br>')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


0

আপনি এটি ডায়নামিকভাবে করতে পারেন - যদি আপনি না শুধুমাত্র মুখোমুখি হন: এইচএইচ: মিমি: এসএস, তবে মিমি: এসএস, এমনকি এসএসও একা।

var str = '12:99:07';
var times = str.split(":");
times.reverse();
var x = times.length, y = 0, z;
for (var i = 0; i < x; i++) {
    z = times[i] * Math.pow(60, i);
    y += z;
}
console.log(y);

0

এটি সর্বাধিক স্পষ্ট, সহজে বোঝার সমাধান:

function convertDurationtoSeconds(duration){
    const [hours, minutes, seconds] = duration.split(':');
    return Number(hours) * 60 * 60 + Number(minutes) * 60 + Number(seconds);
};

const input = '01:30:45';
const output = convertDurationtoSeconds(input);
console.log(`${input} is ${output} in seconds`);

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.