'+ নতুন তারিখ' এ প্লাস সাইনটি কী করে


238

আমি এটি কয়েক জায়গায় দেখেছি

function fn() {
    return +new Date;
}

এবং আমি দেখতে পাচ্ছি যে এটি কোনও তারিখের বস্তুর পরিবর্তে টাইমস্ট্যাম্পটি ফিরিয়ে দিচ্ছে, তবে প্লাস চিহ্নটি কী করছে সে সম্পর্কে আমি কোনও ডকুমেন্টেশন পাচ্ছি না।

কেউ কি ব্যাখ্যা করতে পারেন?


উত্তর:


294

এটিই + ইউনিারি অপারেটর, এটি সমান:

function(){ return Number(new Date); }

দেখুন: http://xkr.us/articles/ javascript / unary-add/

এবং এমডিএন তে: https://developer.mozilla.org/en-US/docs/Web/ জাভা স্ক্রিপ্ট / রেফারেন্স / অপারেটর / আরিথমেটিক_ অপারেটরগুলি # ইউনারি_প্লাস


4
তবে কেন আপনি getTimeতারিখের অবজেক্টে সংজ্ঞায়িত পদ্ধতিটি ব্যবহার করবেন না ?!
টেকোন

30
প্রায় কোনও পরিস্থিতিতে আপনার আসলে এটি ব্যবহার করা উচিত নয়। আমি এই সত্যিই জ্বলতে পেয়েছি। + নতুন তারিখ () কোনও ধরণের গাণিতিক ক্রিয়াকলাপের পাশাপাশি একটি বড় পারফরম্যান্স জরিমানা ভোগ করবে। এই jsperf দেখুন, jsperf.com/new-date-timing
Geuis

9
@ ব্র্যাডকোচ প্রোগ্রামিং ব্রিভিটিতে অবশ্যই আত্মার বুদ্ধি নয়। পাইথন সম্প্রদায় এটিকে পর্যাপ্ত পরিমাণে বলেছে "স্পষ্টত সর্বদা অন্তর্নিহিতের চেয়ে ভাল" " কোনও ব্রাউজার যদি কোনও রিগ্রেশনের মাধ্যমে সেখানে উল্লিখিত স্বয়ংক্রিয় ধরণের রূপান্তর পরিবর্তন করে? এখন আপনার কোডটি ঠিক কাজ করে না! .getTime()এটি সর্বদা বীমা করে দেবে
tkone

11
@ জিউ আরও একটি দুর্দান্ত কারণ যেটি আপনি বোঝাতে পারেন না কেবল তাই করা উচিত!
tkone

14
সাইন ইসমাস্ক্রিপ্ট ৫ টি রয়েছে Date.now(), যা মিলি সেকেন্ডে তারিখ এবং সময় পাওয়ার জন্য পছন্দের উপায়।
কিউটম্যাচাইন

43

জাভাস্ক্রিপ্ট আলগাভাবে টাইপ করা হয়, তাই এটি নির্দিষ্ট পরিস্থিতিতে জবরদস্তি / রূপান্তর প্রকার সম্পাদন করে:

http://blog.jeremymartin.name/2008/03/understanding-loose-typing-in.html
http://www.jibbering.com/faq/faq_notes/type_convert.html

অন্যান্য উদাহরণ:

>>> +new Date()
1224589625406
>>> +"3"
3
>>> +true
1
>>> 3 == "3"
true

>>> 3 === "3" মিথ্যা
ডেভিড স্পেক্টর

6

একটি জাভাস্ক্রিপ্ট তারিখ স্ট্রিং হিসাবে লেখা যেতে পারে:

থু সেপ্টেম্বর 10 2015 12:02:54 GMT + 0530 (IST)

বা একটি সংখ্যা হিসাবে:

1441866774938

সংখ্যা হিসাবে লিখিত তারিখগুলি, 1 জানুয়ারী, 1970, 00:00:00 সাল থেকে মিলি সেকেন্ডের সংখ্যা নির্দিষ্ট করে।

আপনার প্রশ্নে আসার পরে এটি 'এসাইনমেন্ট অপারেটর' = 'যোগ করে তারিখকে সমান সংখ্যার মান হিসাবে রূপান্তরিত করে se

সংখ্যা (নতুন তারিখ ()) এর মতো সংখ্যা () ফাংশন ব্যবহার করে এটি অর্জন করা যেতে পারে;

var date = +new Date(); //same as 'var date =number(new Date());'


3

আরও কিছু তথ্য দেওয়ার জন্য:

যদি আপনি মনে রাখেন, আপনি যখন দুটি তারিখের মধ্যে সময়ের পার্থক্যটি সন্ধান করতে চান, আপনি কেবল নীচের হিসাবে করেন;

var d1 = new Date("2000/01/01 00:00:00"); 
var d2 = new Date("2000/01/01 00:00:01");  //one second later

var t = d2 - d1; //will be 1000 (msec) = 1 sec

typeof t; // "number"

এখন আপনি D1-0 প্রকারের পরীক্ষা করে দেখুন এটি একটি সংখ্যাও:

t = new Date() - 0; //numeric value of Date: number of msec's since 1 Jan 1970.
typeof t; // "number"

যা + তারিখটিকে সংখ্যায় রূপান্তর করবে:

typeof (+new Date()) //"number"

তবে লক্ষ্য করুন যে একইরকম আচরণ করা 0 + new Date()হবে না ! এটি স্ট্রিং হিসাবে সংক্ষিপ্ত করা হবে:

0 + new Date() // "0Tue Oct 16 05:03:24 PDT 2018"

1

এটি একটি অ্যানারি অ্যাড অপারেটর এবং সুস্পষ্ট নম্বর রূপান্তরকরণের জন্যও ব্যবহৃত হয়, সুতরাং আপনি যখন কল করবেন তখন +new Date()এটি valueOf()থেকে আমরা স্ট্রিংয়ের মতো ব্যবহার করে সেই অবজেক্টের সংখ্যাসূচক মানটি পাওয়ার চেষ্টা করেtoString()

new Date().valueOf() == (+new Date)  // true

-3

এটি ঠিক একই জিনিসটি করে:

ফাংশন () {0 + নতুন তারিখ ফেরত; }

এর একই ফলাফল রয়েছে:

ফাংশন () new নতুন তারিখ ফিরিয়ে দিন ()। getTime (); }

11
0 + নতুন তারিখে না। এটি প্রথমে তারিখটিকে একটি স্ট্রিংয়ে রূপান্তর করে এবং তারপরে একটি "0" প্রিনেন্ড করে, (যেমন: "0Tue অক্টোবর 21 2008 20:38:05 GMT-0400");
ক্রিস নো

2
1 * নতুন তারিখটি হবে, তবে 1 + নতুন তারিখ -> স্ট্রিং
কেন্ট ফ্রেড্রিক

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