আমি কীভাবে .toLocaleTimeString () সেকেন্ড প্রদর্শন না করে ব্যবহার করব?


162

আমি বর্তমানে সেকেন্ড প্রদর্শন না করে ব্যবহারকারীর সময় প্রদর্শনের চেষ্টা করছি। জাভাস্ক্রিপ্টের .toLocaleTimeString () ব্যবহার করে আমি এটি করার কোন উপায় আছে?

এরকম কিছু করা:

var date = new Date();
var string = date.toLocaleTimeString();

প্রতিটি ইউনিটের সাথে ব্যবহারকারীর সময় প্রদর্শন করবে, যেমন বর্তমানে এটি 3:39:15 অপরাহ্ন প্রদর্শিত হবে। আমি কি ঠিক কয়েক সেকেন্ড বাদে একই স্ট্রিংটি প্রদর্শন করতে সক্ষম? (উদাঃ 3:39 অপরাহ্ন)

উত্তর:


316

সেকেন্ড পরিত্রাণ পেতে এই পৃষ্ঠার উপর ভিত্তি করে আপনি সেট করতে পারেন এই পৃষ্ঠার ভিত্তিতে আপনি সর্বদা বিকল্পগুলি সেট করতে পারেন something

var dateWithouthSecond = new Date();
dateWithouthSecond.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});

ফায়ারফক্স, ক্রোম, আই 9 + এবং অপেরা দ্বারা সমর্থিত। আপনার ওয়েব ব্রাউজার কনসোলে এটি ব্যবহার করে দেখুন।


2
ধন্যবাদ, আমি এই উত্তরের জন্য কয়েক ঘন্টা সন্ধান করছিলাম।
মোস্তফাপি

5
এফওয়াইআই hour: "2-digit"আমার পক্ষে ক্রোম 42 বা এফএফ 37 --- এ আমার জন্য কাজ করছে না দুটিতেই d = new Date(1429524912495).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit', hour12: true})ফিরে আসে "6:15 AM"
user9645

16
[]একটি নির্দিষ্ট লোকেল ছেড়ে দিতে ব্যবহার করুন । এইভাবে আপনি ব্যবহারকারীদের কাছে থাকুন:toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}
হাফেনক্রিনিচ

12
ক্রোম 51 এ কাজ করে:new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}); "17:08"
রোফ্রোল

1
হ্যাঁ, আমি এখানে পোস্ট করার পরে 4 বছর হয়ে গেছে, তাই অনেক কিছুই পরিবর্তিত হয়েছে। অবাক হওয়ার কিছু নেই যে আপনার আর এটি নির্দিষ্ট করার দরকার নেই। শুভেচ্ছা সহ
CJLopez

10

এটি আমার পক্ষে কাজ করে:

var date = new Date();
var string = date.toLocaleTimeString([], {timeStyle: 'short'});

6
এটি লক্ষণীয় যে, ২০২০ সালের মার্চ পর্যন্ত টাইমস্টাইল বিকল্পটি কেবল ক্রোম এবং অপেরাতে সমর্থিত , ফায়ারফক্স, এজ / আইই এবং সাফারিতে নয়। আপনি যদি বিস্তৃত কভারেজ চান তবে আপাতত ঘন্টা এবং মিনিটের বিকল্পগুলির সাথে লেগে থাকা ভাল better
বকথর্ন

সাফারি / আইওএসের জন্য, এটি কেবল মার্কিন যুক্তরাষ্ট্রে কাজ করে যেখানে আপনার AM / PM আছে। en-US 3:16 অপরাহ্ন প্রদর্শিত হবে, অন্যান্য লোকাল 15:16:00 প্রদর্শিত হবে।
পাসকিট

8

ডেট.প্রোটোটাইপ ডটলোক্যাল স্ট্রিংয়ের দ্বারা প্রত্যাবর্তিত মান হ'ল বাস্তবায়ন নির্ভর, সুতরাং আপনি যা পাবেন তা পাবেন। আপনি সেকেন্ড সরাতে স্ট্রিংটিকে বিশ্লেষণের চেষ্টা করতে পারেন তবে এটি বিভিন্ন ব্রাউজারে আলাদা হতে পারে তাই আপনার প্রতিটি ব্রাউজারের জন্য ভাতা দেওয়ার প্রয়োজন make

আপনার নিজস্ব, দ্ব্যর্থহীন বিন্যাস তৈরি করা তারিখ পদ্ধতিগুলি ব্যবহার করা কঠিন নয়। উদাহরণ স্বরূপ:

function formatTimeHHMMA(d) {
  function z(n){return (n<10?'0':'')+n}
  var h = d.getHours();
  return (h%12 || 12) + ':' + z(d.getMinutes()) + ' ' + (h<12? 'AM' :'PM');
}

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

@ GabeHalsmer-আমি না, এবং না, (যেমন শেষ অনুচ্ছেদ পার্স স্ট্রিং Date.parse যার ফলে সুপারিশ এখানে )। তবে এটি এখানে অপ্রাসঙ্গিক, এটি মোটেও উল্লেখ করা হয়নি, আপনি যদি মনে করেন উত্তরটি ভুল করে ফেলেছেন (যেমন " আপনি পার্স করার চেষ্টা করতে পারেন ...") "
রবজি

ভাল লিঙ্ক। সুতরাং সংক্ষেপে লোকেরা হয় তাদের নিজস্ব পার্স বা নিজস্ব টোস্ট্রিং পদ্ধতি তৈরি করতে হবে, কারণ মৌলিকভাবে ডেট.প্রোটোটাইপ.টোলোল স্ট্রিং এবং তারিখ.পার্স বেমানান। টসস্ট্রিং করা আমার কাছে সহজ কাজ বলে মনে হয়েছিল। তবে আপনি প্রয়োগ করেছেন আপনি নিজের পার্স করছেন। সুতরাং হয় মানুষের জন্য কাজ করবে। আমি সকলকে সচেতন করতে যে অপরিহার্য জিনিসটি চেয়েছিলাম তা হ'ল ডেট.পার্স টোকলাস্ট্রিংয়ের সাথে কাজ করে না। এবং এটি কতটা সূক্ষ্মতার কারণে এই অসঙ্গততাটি সনাক্ত করতে আমার ঘন্টা সময় লেগেছে। বাম থেকে ডান চিহ্নগুলি ভিজ্যুয়াল স্টুডিওর ডিবাগারে অদৃশ্য।
গ্যাবে হালসমার

শীতল, অন্য একদম পুরোপুরি বিভ্রান্ত ভোট। এতে অবাক হওয়ার কিছু নেই যে লোকেরা তাদের নাম তাদের রাখতে চান না।
রবজি

অন্যান্য ফরম্যাটে খেজুর সঞ্চয় এবং পরিবহনের জন্য, আইওএসএসআরটিং এবং গেটটাইম সম্ভবত পুনর্বিবেচনার জন্য সবচেয়ে নিরাপদ তারিখের ফর্ম্যাট সরবরাহ করে। আমি গত দশকে কোনও জেএস বাস্তবায়নের বিষয়ে অবগত নই গেটটাইম থেকে ফিরে আসা ইউটিসির মিলিসেকেন্ড সংস্করণটি পরিচালনা না করে এবং আইএসও মানগুলিও লুনংয়ের জন্য পার্সেবল ডেট ফর্ম্যাট হিসাবে চশমাগুলিতে ছিল। তবে ইউআই উপাদানগুলির কাছ থেকে কখনই তারিখগুলি পড়বেন না। এটি আপনার অ্যাপ্লিকেশন স্তর থেকে আসা উচিত। এবং সবসময় সাফারিতে পরীক্ষা করুন। তারা তারিখের অবজেক্ট সম্পর্কে আই 6 6 স্তরের ঝাঁকুনি পড়েছে।
এরিক পুনরায়


0

আমি এই সমস্যার সমাধানও খুঁজছিলাম, শেষ পর্যন্ত আমি যা এলাম তা এখানে:

function getTimeStr() {
    var dt = new Date();
    var d = dt.toLocaleDateString();
    var t = dt.toLocaleTimeString();
    t = t.replace(/\u200E/g, '');
    t = t.replace(/^([^\d]*\d{1,2}:\d{1,2}):\d{1,2}([^\d]*)$/, '$1$2');
    var result = d + ' ' + t;
    return result;
}

আপনি এটি এখানে চেষ্টা করতে পারেন: http://jsfiddle.net/B5Zrx/

200 u200E হ'ল এমন কিছু ফর্ম্যাটিং চরিত্র যা আমি কিছু আইই সংস্করণে দেখেছি (এটি ইউনিকোড বাম থেকে ডান চিহ্ন)।

আমি ধরে নিয়েছি যে ফর্ম্যাট সময়টিতে "XX: XX: XX" এর মতো কিছু থাকে তবে এটি অবশ্যই সেকেন্ডের সাথে সময় হয় এবং আমি শেষ অংশটি সরিয়ে ফেলি, যদি আমি এই প্যাটার্নটি খুঁজে না পাই তবে কিছুই পরিবর্তন হয় না। বেশ নিরাপদ তবে কিছু অদ্ভুত পরিস্থিতিতে কয়েক সেকেন্ড রেখে যাওয়ার ঝুঁকি রয়েছে।

আমি কেবল আশা করি এমন কোনও লোকেল নেই যা ফর্ম্যাট হওয়া সময়ের অংশগুলির ক্রম পরিবর্তন করবে (যেমন: এটি এসএস: মিমি: এইচ করুন)। এই বাম থেকে ডান চিহ্নটি আমাকে এ সম্পর্কে কিছুটা ঘাবড়েচ্ছে যদিও সে কারণেই আমি ডান থেকে বাম চিহ্ন (\ u202E) সরিয়ে নেই - আমি এই ক্ষেত্রে কোনও মিল খুঁজে না পাওয়া পছন্দ করি এবং ছেড়ে চলে যাব এই ক্ষেত্রে সেকেন্ডের সাথে সময় বিন্যাস করা।


1
+1 আপনি একমাত্র , যিনি প্রশ্নের সঠিক উত্তর দিয়েছেন।
সাথীদের

1
এটি কী toLocaleTimeString()রিটার্ন দেয় যা সমস্ত লোকেলের ক্ষেত্রে সত্য নাও হতে পারে সে সম্পর্কে অনেক ধারণা তৈরি করে ।
এজে রিচার্ডসন

0

আপনি এটি চেষ্টা করতে পারেন, যা আমার প্রয়োজনের জন্য কাজ করছে।

var d = new Date();
d.toLocaleTimeString().replace(/:\d{2}\s/,' ');

অথবা

d.toLocaleString().replace(/:\d{2}\s/,' ');

6
এটি কাজ করবে না কারণ অন্যান্য ভাষাগুলি এর চেয়ে সম্পূর্ণ আলাদা বিভাজক ব্যবহার করতে পারে :
জন কুপস

-2

এখানে এমন একটি ফাংশন যা এটি করবে তা এখানে মন্তব্য সহ যা ব্যাখ্যা করবে:

  function displayNiceTime(date){
    // getHours returns the hours in local time zone from 0 to 23
    var hours = date.getHours()
    // getMinutes returns the minutes in local time zone from 0 to 59
    var minutes =  date.getMinutes()
    var meridiem = " AM"

    // convert to 12-hour time format
    if (hours > 12) {
      hours = hours - 12
      meridiem = ' PM'
    }
    else if (hours === 0){
      hours = 12
    }

    // minutes should always be two digits long
    if (minutes < 10) {
      minutes = "0" + minutes.toString()
    }
    return hours + ':' + minutes + meridiem
  }

যেহেতু, অন্যরা উল্লেখ করেছেন যে, লোকালটাইম স্ট্রিং () বিভিন্ন ব্রাউজারে আলাদাভাবে প্রয়োগ করা যেতে পারে, তাই এই উপায় আরও ভাল নিয়ন্ত্রণ দেয়।

জাভাস্ক্রিপ্ট তারিখ অবজেক্ট সম্পর্কে আরও জানার জন্য, এটি একটি ভাল সংস্থান: https://developer.mozilla.org/en-US/docs/Web/JavaScript/References/ গ্লোবাল_অবজেক্টস / তারিখ


-2

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

var myVar=setInterval(function(){myTimer()},1000);

function myTimer() {
    var d = new Date();
    currentNow = d.toLocaleTimeString();
    nowArray = currentNow.split(':');
    filteredNow = nowArray[0]+':'+nowArray[1];
    document.getElementById("demo").innerHTML = filteredNow;
}

-3

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

var d = new Date();
var localeTime = d.toLocaleTimeString();
var localeTimeSansSeconds = localeTime.replace(/:(\d{2}) (?=[AP]M)/, " ");

এই পদ্ধতির স্ট্রিংয়ের: এসএস এএম / পিএম প্রান্তটি দখল করতে একটি রিজেক্স লুক-ফরোয়ার্ড ব্যবহার করে এবং স্ট্রিংয়ের বাকী অংশটি আউটচুড করে ফিরিয়ে: এসএস অংশটি একটি স্পেসের সাথে প্রতিস্থাপন করে। (আক্ষরিক অর্থে "দুটি সংখ্যার একটি কোলন এবং একটি স্থান সন্ধান করুন যা এএম বা প্রধান মন্ত্রীর দ্বারা অনুসরণ করা হয় এবং কোলন, দুটি অঙ্ক এবং স্থানের অংশটি কেবল একটি স্থানের সাথে প্রতিস্থাপন করে)।

এই এক্সপ্রেশন / অ্যাপ্রোচটি কেবল এন-ইউএস এবং এন-ইউএস-মতো লোকেলসের জন্য কাজ করে। যদি আপনিও অনুরূপ ফলাফল চান, বলুন, ব্রিটিশ ইংলিশ (এন-জিবি), যা এএম / পিএম ব্যবহার করে না, একটি আলাদা নিয়মিত অভিব্যক্তি প্রয়োজন।

মূল প্রশ্নকারীর নমুনা আউটপুটের ভিত্তিতে, আমি ধরে নিই যে তারা মূলত আমেরিকান শ্রোতা এবং এন-মার্কিন সময় স্কিমার সাথে কাজ করে।


-3

কেবলমাত্র তারিখটিকে স্ট্রিংয়ে রূপান্তর করুন এবং তারপরে আপনি যে সাবস্ট্রিংগুলি চান সেগুলি সন্নিবিষ্ট করুন।

let time = date.toLocaleTimeString();
console.log(time.substr(0, 4) + time.substr(7, 3))
//=> 5:45 PM

3
আপনার পোস্টে কিছু ব্যাখ্যা যোগ করুন।
ডিজিটকার্ট

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