জাভাস্ক্রিপ্ট ব্যবহার করে একটি নির্দিষ্ট তারিখের জন্য পর্ব পান


উত্তর:


188

আপনি একটি Dateঅবজেক্ট তৈরি করতে এবং এতে কল getTimeকরতে পারেন:

new Date(2010, 6, 26).getTime() / 1000

13
তারিখ নির্মাতার জন্য মাসের যুক্তিতে কিছুটা সামঞ্জস্য নেই এবং আসলে শূন্য-ভিত্তিক। এর অর্থ 7 আগস্ট, সুতরাং আপনার 1 :-)
অ্যান্ডি ই

6
@ অ্যান্ডি - বাকিগুলি রাখার সময় মাস -1-এর অফসেট করা একটি হাহাকর ধারণা, এবং জাভা স্ক্রিপ্টটি যদি কখনও ব্যবহার করা হত তবে স্পেস শাটলকে বাদামে পরিণত করতে পারে ঠিক এমনই জিনিস :)
অনুরাগ

7
সম্ভবত আরও ভাল: নতুন তারিখ ("2010-7-26") get গেটটাইম () / 1000 যাতে আপনাকে অফসেট সম্পর্কে চিন্তা করতে হবে না।
ভিনসেন্ট ম্যাকনাব

6
@ ভিনসেন্ট: new Date("2010-7-26")ইন্টারনেট এক্সপ্লোরারে পার্স করবে না। তারিখ কনস্ট্রাক্টর স্ট্রিং পাস করার পরে ডেট.পার্স () পদ্ধতিতে নির্ভর করে যা ইসিএমএ-262 তৃতীয় সংস্করণে বাস্তবায়িত হয় এবং ফলস্বরূপ, আইই তে কুখ্যাতভাবে জটিল নয়।
অ্যান্ডি ই

সময় অঞ্চলকে নির্দিষ্ট করে কেউ সম্ভাব্য ত্রুটি বা ভুল বোঝাবুঝিকে হ্রাস করতে পারে। কমপক্ষে ফায়ারফক্স, অপেরা এবং ক্রোমের আসল (লিনাক্স) সংস্করণগুলি নতুন তারিখের মতো একটি জাভাস্ক্রিপ্ট তারিখ ইনস্ট্যান্ট করতে সহায়তা করে ("জানুয়ারী 1, 1970 GMT + 00: 00, 00:01"); যা সঠিক মাসের ফর্ম্যাট সম্পর্কে বিভ্রান্তি হ্রাস করে।
মাইকেল বেসটেক 31'15




1

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

পদ্ধতি 1: মেশিনের টাইমজোন নির্ভর

ডিফল্টরূপে, জাভাস্ক্রিপ্ট মেশিনের টাইমজোন বিবেচনা করে একটি তারিখ দেয়, সুতরাং getTime()ফলাফলটি কম্পিউটার থেকে কম্পিউটারে পরিবর্তিত হয়। আপনি এই আচরণটি চলমান যাচাই করতে পারেন:

new Date(1970, 0, 1, 0, 0, 0, 0).getTime()
    // Since 1970-01-01 is Epoch, you may expect ZERO
    // but in fact the result varies based on computer's timezone

আপনি যদি আপনার সময় অঞ্চল বিবেচনা করে ইপোকের সময় থেকে সত্যিই সময় চান তবে এটি কোনও সমস্যা নয়। সুতরাং আপনি যদি বর্তমান সময়ের জন্য ইপোকের সময় বা কম্পিউটারের টাইমজোন ভিত্তিক নির্দিষ্ট তারিখের জন্য সময় পেতে চান তবে আপনি এই পদ্ধতিটি ব্যবহার অবিরত মুক্ত।

// Seconds since Epoch (Unix timestamp format)

new Date().getTime() / 1000             // local Date/Time since Epoch in seconds
new Date(2020, 11, 1).getTime() / 1000  // time since Epoch to 2020-12-01 00:00 (local timezone) in seconds

// Milliseconds since Epoch (used by some systems, eg. JavaScript itself)

new Date().getTime()                    // local Date/Time since Epoch in milliseconds
new Date(2020,  0, 2).getTime()         // time since Epoch to 2020-01-02 00:00 (local timezone) in milliseconds

// **Warning**: notice that MONTHS in JavaScript Dates starts in zero (0 = January, 11 = December)

পদ্ধতি 2: মেশিনের টাইমজোন স্বাধীন

তবে আপনি যদি ইউটিসি-তে নির্দিষ্ট তারিখের (অর্থাৎ, টাইমজোন স্বতন্ত্র) সময়কালীন সময়ের পরিবর্তনের জন্য সময়টি পেতে চান এবং ইপচের পর থেকে সময় পেতে চান তবে আপনার Date.UTCপদ্ধতিটি ব্যবহার করতে হবে বা তারিখটি আপনার সময় অঞ্চল থেকে ইউটিসিতে স্থানান্তর করতে হবে:

Date.UTC(1970,  0, 1)
    // should be ZERO in any computer, since it is ZERO the difference from Epoch

    // Alternatively (if, for some reason, you do not want Date.UTC)
    const timezone_diff = new Date(1970, 0, 1).getTime()  // difference in milliseconds between your timezone and UTC
    (new Date(1970,  0, 1).getTime() - timezone_diff)
    // should be ZERO in any computer, since it is ZERO the difference from Epoch

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

// Seconds since Epoch (Unix timestamp format)

Date.UTC(2020,  0, 1) / 1000  // time since Epoch to 2020-01-01 00:00 UTC in seconds

    // Alternatively (if, for some reason, you do not want Date.UTC)
    const timezone_diff = new Date(1970, 0, 1).getTime()
    (new Date(2020,  0, 1).getTime() - timezone_diff) / 1000  // time since Epoch to 2020-01-01 00:00 UTC in seconds
    (new Date(2020, 11, 1).getTime() - timezone_diff) / 1000  // time since Epoch to 2020-12-01 00:00 UTC in seconds

// Milliseconds since Epoch (used by some systems, eg. JavaScript itself)

Date.UTC(2020,  0, 2)   // time since Epoch to 2020-01-02 00:00 UTC in milliseconds

    // Alternatively (if, for some reason, you do not want Date.UTC)
    const timezone_diff = new Date(1970, 0, 1).getTime()
    (new Date(2020,  0, 2).getTime() - timezone_diff)         // time since Epoch to 2020-01-02 00:00 UTC in milliseconds

// **Warning**: notice that MONTHS in JavaScript Dates starts in zero (0 = January, 11 = December)

আইএমও, আপনি কী করছেন তা যদি না জানেন (উপরের নোটটি দেখুন), আপনার মেশিনটি স্বতন্ত্র হওয়ায় আপনার পদ্ধতি 2 পছন্দ করা উচিত ।


শেষ নোট

যদিও এই উত্তরের পুনঃসংশোধনগুলি, এবং যেহেতু Date.UTCএকটি নির্দিষ্ট তারিখ / সময় ব্যতীত কাজ করে না, আপনি বিকল্প পদ্ধতির ব্যবহার এবং এটির মতো কিছু করার ক্ষেত্রে ঝোঁক থাকতে পারেন:

const timezone_diff = new Date(1970, 0, 1).getTime()
(new Date().getTime() - timezone_diff)  // <-- !!! new Date() without arguments
    // means "local Date/Time subtracted by timezone since Epoch" (?)

এটি কোনও অর্থ দেয় না এবং এটি সম্ভবত ভুল (আপনি তারিখটি সংশোধন করছেন)। এটি না করার বিষয়ে সচেতন হন। আপনি যদি বর্তমান তারিখ এবং সময় থেকে এপোকের সময় থেকে সময় পেতে চান তবে আপনি পদ্ধতি 1 ব্যবহার করে খুব সম্ভবত ঠিক আছেন ।


1

Date.parse()পদ্ধতিটি একটি তারিখের একটি স্ট্রিং প্রতিনিধিত্বকে বিশ্লেষণ করে এবং সেই থেকে মিলসেকেন্ডের সংখ্যা প্রদান করে January 1, 1970, 00:00:00 UTC

const unixTimeZero = Date.parse('01 Jan 1970 00:00:00 GMT');
const javaScriptRelease = Date.parse('04 Dec 1995 00:12:00 GMT');

console.log(unixTimeZero);
// expected output: 0

console.log(javaScriptRelease);
// expected output: 818035920000

এখানে আরও এক্সপ্লোর করুন: তারিখ.পার্স ()


0
Number(new Date(2010, 6, 26))

উপরের জিনিসগুলির মতো একইভাবে কাজ করে। আপনার যদি সেকেন্ডের দরকার হয় তবে ভুলে যাবেন না/ 1000

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