একটি জাভাস্ক্রিপ্ট তারিখ মধ্যরাত শুরু করার সেরা উপায় কি?


439

নতুন তারিখের একটি উদাহরণ পাওয়ার সহজ উপায় কী () তবে মধ্যরাতে সময় নির্ধারণ করা?

উত্তর:


874

setHoursপদ্ধতি ঐচ্ছিক নিতে পারেন minutes, secondsএবং msআর্গুমেন্ট, উদাহরণস্বরূপ:

var d = new Date();
d.setHours(0,0,0,0);

যে সময় সেট হবে 00:00:00.000এর আপনার বর্তমান সময় অঞ্চল , যদি আপনি ইউটিসি সময়ে কাজ করতে চাই, আপনি ব্যবহার করতে পারেন setUTCHoursপদ্ধতি।


41
এফওয়াইআই, আমি এই পদ্ধতিটি (ডি.সেটহর্স (0,0,0,0)) 270 কে সারিগুলিতে একটি হ্রাসকরণ ক্রিয়ায় চালাচ্ছি এবং এটি d.setHours (0) করার চেয়ে 20 সেকেন্ডেরও বেশি দ্রুত; d.setMinutes (0); d.setSeconds (0); দুর্দান্ত উত্তর @ সিএমএস!
jbnunn

32
ডেট অবজেক্ট হিসাবে d রাখার জন্য এটি দুটি লাইনে করা দরকার। আমি সম্প্রতি একটি বাগ ঠিক করেছি যা এটি এক লাইনে করেছে: var d = নতুন তারিখ ()। সেট ঘন্টাগুলি (0, 0, 0, 0)। যাইহোক, d তখন একটি সংখ্যা ছিল, যে তারিখটি সেটহর্সগুলি একটি নম্বর ফেরত দেওয়ার পরে নয়।
জেসন

9
আমি সবেমাত্র এটি পেরিয়ে এসেছি (আমি জানি পার্টিটি দেরীতে), এছাড়াও একটি তারিখ ফেরত দেওয়ার জন্য একটি লাইন সমাধানের প্রয়োজন। এই খুঁজছেন যে কেউ জন্য, @ Zon এর উত্তর পুরোপুরি কাজ করে: new Date(new Date().setHours(0,0,0,0))
এসআরাক

226

কেবল স্পষ্ট করে বলতে চেয়েছিলেন যে গৃহীত উত্তর থেকে স্নিপেট অতীতের নিকটতম মধ্যরাত দেয় :

var d = new Date();
d.setHours(0,0,0,0); // last midnight

আপনি যদি ভবিষ্যতে নিকটতম মধ্যরাত পেতে চান তবে নিম্নলিখিত কোডটি ব্যবহার করুন:

var d = new Date();
d.setHours(24,0,0,0); // next midnight

6
আজ 25 ঘন্টা দীর্ঘ হলে (ডালাইট সেভিংয়ের জন্য ঘড়িগুলি সামঞ্জস্য করে) কী হবে?
qntm

8
এটি ক্লায়েন্ট সাইড স্ক্রিপ্ট, মধ্যরাত মধ্যরাত, দিবালোকের সঞ্চয় থাকা সত্ত্বেও .. উল্লেখযোগ্য উল্লেখযোগ্য .. বিশ্বের প্রতিটি স্থানই ডিএসটি (দিবালোকের সঞ্চয় সময়) ব্যবহার করে না
ক্রিস

2
@ কিএনটিএম: দিবালোক সংরক্ষণের সময় পরিবর্তনটি সর্বদা সকাল 2 টা থেকে 4 টা এ প্রয়োগ করা হয়, যাতে সেদিনের জন্য এটি কেবলমাত্র একটি মধ্যরাত হয় :)। তবে হ্যাঁ, সকাল 3 টা দিনের মধ্যে দুবার ঘটতে পারে (ফেসপাল)
ড্যান

@ ক্রিস না, আমি দ্বিতীয় স্নিপেটটি বোঝাতে চাইছি। "আজ মধ্যরাতের 24 ঘন্টা পরে" সর্বদা "আগামীকাল মধ্যরাত" এর মতো হয় না। এই ক্ষেত্রে, দ্বিতীয় স্নিপেট কাজ করে?
qntm

3
@ কিএনটিএম: ডেট.সেট ঘন্টাগুলি অন্ধভাবে 24 ঘন্টা জুড়ে না, এটি আরও বুদ্ধিমান। পরিবর্তে, এটি মুহুর্তের একটি টাইমস্ট্যাম্প ফিরে আসে, যখন পরের বারটি 24 ঘন্টা প্রদর্শিত হবে। সময় সাশ্রয়ের বিষয়টি বিবেচনায় রেখে। কনসোলে নিজে খেলতে চেষ্টা করুন। আকর্ষণীয়, সেটহর্স (25) আগামীকাল 1am এর টাইমস্ট্যাম্পটি ফেরায়
ড্যান

68

অবজেক্ট কনফিগারেশনের জন্য একটি ওয়ান-লাইনার:

new Date(new Date().setHours(0,0,0,0));

কোনও উপাদান তৈরি করার সময়:

dateFieldConfig = {
      name: "mydate",
      value: new Date(new Date().setHours(0, 0, 0, 0)),
}

6
ধন্যবাদ! আমি ভাবছিলাম যে আমি কীভাবে এটি একটি এক লাইনে করতে পারি কারণ আমি কোনও সামগ্রীর সম্পত্তি নির্ধারণ করছি! দুর্দান্ত উত্তর।
পাওলো রবার্তো রোজা

ধন্যবাদ জোন, এটি আমাকে এটি একক লাইন লিখতে সহায়তা করেছে।
হাংরিসোল

22

কেবল এখানে এটি যুক্ত করতে চলেছি কারণ আমি কীভাবে মুহুর্তে এটি করব তা সন্ধান করতে এই পৃষ্ঠায় অবতরণ করেছি jjs এবং অন্যরাও এটি করতে পারে।

[যুক্তি: "মুহুর্ত" শব্দটি ইতিমধ্যে এই পৃষ্ঠায় অন্য কোথাও উপস্থিত রয়েছে তাই অনুসন্ধান ইঞ্জিনগুলি এখানে সরাসরি নির্দেশ দেয় এবং মুহুর্ত.জেগুলি অন্যান্য তারিখ সম্পর্কিত এসও প্রশ্নগুলিতে এটি কতবার উল্লেখ করা হয়েছে তা কভার করার বিষয়ে ওয়্যারেন্ট দেওয়ার পক্ষে যথেষ্ট বিস্তৃত]

সুতরাং, সংস্করণে ২.০.০ এবং তারপরে:

date.startOf('day');

পূর্ববর্তী সংস্করণগুলির জন্য:

date.sod();

দস্তাবেজ:

http://momentjs.com/docs/#/manipulating/start-of/


একটি তারিখ বস্তুর ফিরে পেতে, এটি ব্যবহার করুনmoment(DATE_OBJECT).startOf('day').toDate();
xinthose

2
হ্যাঁ, আপনি 2 লাইনে কিছু করতে পারেন এমন একটি 52kb জাভাস্ক্রিপ্ট লাইব্রেরি যুক্ত করুন।
ব্রুস লিম

19
এবং যদি আপনি ইতিমধ্যে অনেকগুলি ভাল কারণগুলির জন্য ইতিমধ্যে moment.js ব্যবহার করছেন ...? ব্যঙ্গাত্মক মন্তব্য যুক্ত করার আগে আমি যে যুক্তি দিয়েছিলাম তা পড়ার বিষয়ে কীভাবে?
andyhasit

11

আপনি সম্ভবত ব্যবহার করতে পারেন

new Date().setUTCHours(0,0,0,0)

আপনার যদি একবারে মান প্রয়োজন হয়।


1
এটি ওপি প্রয়োজনীয় হিসাবে কোনও তারিখের উদাহরণ গ্রহণ করে না।
cobberboy

এটি নির্ভুলভাবে সেরা উত্তর, তবে কোনও তারিখের উদাহরণ ফেরত দিতে একটু সম্পাদনা দরকার। নতুন তারিখ (নতুন তারিখ ()। সেটআপচার্স (0, 0, 0, 0));
ভিটিএফএল

4

@ ড্যানের উদাহরণে উপযোগ যুক্ত করার পরে, আমার পরের মধ্যাহ্ন বা মধ্যরাতের সন্ধানের প্রয়োজন ছিল।

var d = new Date();
if(d.getHours() < 12) {
   d.setHours(12,0,0,0); // next midnight/midday is midday
} else {
   d.setHours(24,0,0,0); // next midnight/midday is midnight
}

এটি আমাকে একটি ইভেন্টের জন্য একটি ফ্রিকোয়েন্সি ক্যাপ সেট করার অনুমতি দেয়, কেবল এটিই আমার সাইটে যে কোনও দর্শনার্থীর জন্য সকালে এবং বিকেলে একবার ঘটতে দেয়। ক্যাপচারের মেয়াদ নির্ধারণের জন্য ক্যাপচারের তারিখটি ব্যবহার করা হত।


4

গ্রীষ্মকালীন তারিখগুলি সহ গণনা করা হলে প্রায়শই 1 ইউরোর বেশি বা মাঝরাতের চেয়ে এক ঘন্টা কম (সিইএসটি) হয়ে থাকে। তারিখগুলি ফিরে আসার কারণে এটি 1 দিনের পার্থক্য সৃষ্টি করে। সুতরাং তারিখগুলি নিকটতম মধ্যরাত পর্যন্ত গোল করতে হবে। সুতরাং কোডটি হবে (জ্যামিসন থেকে মজাদার):

    var d = new Date();
    if(d.getHours() < 12) {
    d.setHours(0,0,0,0); // previous midnight day
    } else {
    d.setHours(24,0,0,0); // next midnight day
    }

3

আমার জন্য এটি পরিচালনা করার জন্য আমি একটি দম্পতি প্রোটোটাইপ তৈরি করেছি।

// This is a safety check to make sure the prototype is not already defined.
Function.prototype.method = function (name, func) {
    if (!this.prototype[name]) {
        this.prototype[name] = func;
        return this;
    }
};

Date.method('endOfDay', function () {
    var date = new Date(this);
    date.setHours(23, 59, 59, 999);
    return date;
});

Date.method('startOfDay', function () {
    var date = new Date(this);
    date.setHours(0, 0, 0, 0);
    return date;
});

আপনি যদি নিরাপদ চেকটি চান না, তবে আপনি কেবল ব্যবহার করতে পারেন

Date.prototype.startOfDay = function(){
  /*Method body here*/
};

ব্যবহারের উদাহরণ:

var date = new Date($.now()); // $.now() requires jQuery
console.log('startOfDay: ' + date.startOfDay());
console.log('endOfDay: ' + date.endOfDay());

2

আপনার প্রকল্পের নির্ভরতা হিসাবে ইতিমধ্যে আপনার কাছে d3.js রয়েছে বা এটিকে আনতে কিছু মনে করবেন না, d3- সময় ( d3.js গ্রন্থাগারটি v4.0.0 অনুযায়ী মডুলার ) অন্তর অন্তর পেয়েছে ।

"ডিফল্ট" মানগুলিতে তারিখ নির্ধারণ করার সময় এগুলি দরকারী প্রমাণিত হতে পারে, যেমন মধ্যরাত, ০.০০ সেকেন্ড, মাসের প্রথম ইত্যাদি etc.

var d = new Date(); // Wed Aug 02 2017 15:01:07 GMT+0200 (CEST)
d3.timeHour(d) // Wed Aug 02 2017 00:00:00 GMT+0200 (CEST)
d3.timeMonth(d) // Tue Aug 01 2017 00:00:00 GMT+0200 (CEST)

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

আমি পড়ে গিয়েছি যে এই উত্তরটি ভোট দেওয়া উচিত নয়, বিশেষত যেহেতু মুহুর্তের ব্যবহারের প্রস্তাব দেওয়ার ক্ষেত্রে একটির 16 টি ভোট রয়েছে (এই মন্তব্যটি লেখার মুহূর্তে)। এটি খুব সংক্ষিপ্তভাবে সমস্যাটি সমাধান করে এবং এটি সুস্পষ্ট উপায়ে নয়।
lukeatdesignworks
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.