javascript - জাভাস্ক্রিপ্ট বই pdf




কিভাবে আপনি একটি জাভাস্ক্রিপ্ট তারিখ ইউটিসি রূপান্তর করবেন? (16)

toISOString() পদ্ধতিটি সরলীকৃত বর্ধিত আইএসও ফরম্যাটে ( আইএসও 8601 ) একটি স্ট্রিং প্রদান করে যা সর্বদা 24 বা 27 অক্ষর দীর্ঘ ( YYYY-MM-DDTHH:mm:ss.sssZ বা ±YYYYYY-MM-DDTHH:mm:ss.sssZ , যথাক্রমে)। টাইমজোন সর্বদা শূন্য UTC অফসেট, যা " Z " উপবৃত্ত দ্বারা সূচিত করা হয়।

উত্স: এমডিএন ওয়েব ডক্স

আপনার প্রয়োজনীয় বিন্যাসটি .toISOString() পদ্ধতির সাথে তৈরি করা হয়েছে। পুরানো ব্রাউজারগুলির জন্য (ie8 এবং under), যা নেতিবাচকভাবে এই পদ্ধতিটিকে সমর্থন করে না, শিমটি here পাওয়া here :

এটি আপনাকে আপনার যা প্রয়োজন তা করার ক্ষমতা দেবে:

var isoDate = new Date('yourdatehere').toISOString();

টাইমজোন কাজের জন্য, moment.js এবং moment.js টাইমজোন সত্যিই মূল্যবান সরঞ্জাম ... বিশেষ করে ক্লায়েন্ট এবং সার্ভার জাভাস্ক্রিপ্টের মধ্যে সময় অঞ্চলগুলি নেভিগেট করার জন্য।

ধরুন আপনার ওয়েবসাইটের একজন ব্যবহারকারী একটি তারিখ পরিসীমা প্রবেশ করে।

2009-1-1 to 2009-1-3

কিছু প্রসেসিংয়ের জন্য আপনাকে এই তারিখটি একটি সার্ভারে পাঠাতে হবে, তবে সার্ভার সমস্ত UTC- এ তারিখ এবং সময়গুলি প্রত্যাশা করে।

এখন ব্যবহারকারী আলাস্কা বা হাওয়াই বা ফিজি হয় অনুমান। যেহেতু তারা ইউটিসি থেকে ভিন্ন সময়সীমার মধ্যে রয়েছে তাই তারিখের সীমাটি এইরকম কিছু রূপান্তর করতে হবে:

2009-1-1T8:00:00 to 2009-1-4T7:59:59

জাভাস্ক্রিপ্ট তারিখ অবজেক্ট ব্যবহার করে, সার্ভার কীভাবে বুঝতে পারবে তার মধ্যে প্রথম "স্থানীয়করণ" তারিখের সীমাটি আপনি কীভাবে রূপান্তর করবেন?


UTC এ রূপান্তর করার আরেকটি সমাধান এবং এটি একটি তারিখের অবজেক্ট হিসাবে রাখুন: (এটি ফরম্যাট করা স্ট্রিংয়ের শেষে 'GMT' অংশটি সরানোর দ্বারা কাজ করে, তারপর এটি ডেটা কন্সট্রকটারে ফিরিয়ে দেয়)

var now = new Date();
var now_utc = new Date(now.toUTCString().slice(0, -4));

ডটটাইম পিকার লাইব্রেরির সাথে ইন্টারফেস করার জন্য এটি করতে হবে। কিন্তু সাধারণভাবে এটি এই ভাবে তারিখগুলির সাথে কাজ করার একটি খারাপ ধারণা।

ব্যবহারকারীরা সাধারণত তাদের স্থানীয় সময়ে ডেটাটাইমগুলির সাথে কাজ করতে চায়, তাই আপনি অফসেটগুলির সাথে ডেটটাইম স্ট্রিংগুলিকে সঠিকভাবে পাস করতে সার্ভারের পাশের কোডটি আপডেট করুন, তারপর UTC (সেরা বিকল্প) রূপান্তর করুন অথবা আপনি পাঠানোর আগে একটি UTC স্ট্রিং ক্লায়েন্ট-সাইডে রূপান্তর করুন। সার্ভার (উইল স্টার্ন এর উত্তর মত)


আপনার প্রশ্নটি দেখতে এটি স্পষ্ট যে আপনি আরও পোস্ট প্রসেসিংয়ের জন্য আপনার ব্যাকেন্ডে তারিখ পরিসীমা পাঠাতে চান।

আমি অনুমান করছি যে আপনি স্ট্যান্ডার্ড ডেটা নির্দেশিকাগুলির সাথে সম্মতি দিচ্ছেন যা কোনও নির্দিষ্ট বিন্যাসে ডেটা আশা করে। উদাহরণস্বরূপ, আমি ODATA ব্যবহার করি যা একটি RESTfull API যা তারিখ সময় বস্তুর বিন্যাসে প্রত্যাশা করে: -

হল YYYY-MM-DDT00: 00: 00।

নীচের পোস্ট করা স্নিপেটের মাধ্যমে এটি সহজেই অর্জন করা যেতে পারে (আপনার প্রয়োজন অনুসারে বিন্যাসটি পরিবর্তন করুন)।

var mydate;//assuming this is my date object which I want to expose var UTCDateStr = mydate.getUTCFullYear() + "-" + mydate.getUTCMonth() + "-" + mydate.getUTCDate() + "T00:00:00";

অন্য দিকে, আপনি আমার অবস্থানে আছেন যেখানে আপনি আপনার ব্যাকএন্ড থেকে একটি তারিখ পেয়েছেন এবং ব্রাউজারটি আপনার স্থানীয় তারিখে রূপান্তরিত করে। অন্য দিকে আপনি ইউটিসি তারিখের আগ্রহী হন তবে আপনি নিম্নলিখিতগুলি সম্পাদন করতে পারেন: -

var mydate;//assuming this is my date object which I want to expose var UTCDate = new Date(mydate);/*create a copy of your date object. Only needed if you for some reason need the original local date*/ UTCDate.setTime(UTCDate.getTime() + UTCDate.getTimezoneOffset() * 60 * 1000);

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

উদাহরণস্বরূপ, যদি আমি EST (GMT-5) এ আছি এবং আমার পরিষেবা তারিখের অবজেক্ট ফেরত দেয় = Wed Aug 17 2016 00:00:00 GMT-0500 আমার ব্রাউজারটি স্বয়ংক্রিয়ভাবে আমার স্থানীয় সময়টি পেতে টাইমজোন অফসেট (5 ঘন্টা) অব্যবহৃত করে। তাই আমি যদি সময়টি পেতে চেষ্টা করি তবে আমি 16 আগস্ট 2016 19:00:00 GMT-0500 বুধবার পাবো। এই সমস্যা অনেক কারণ। সেখানে প্রচুর লাইব্রেরি রয়েছে যা অবশ্যই এই সহজ করে তুলবে তবে আমি বিশুদ্ধ JS পদ্ধতিটি ভাগ করতে চাই।

আরও তথ্যের জন্য দয়া করে এখানে দেখুন: http://praveenlobo.com/blog/how-to-convert-javascript-local-date-to-utc-and-utc-to-local-date/ যেখানে আমি আমার পেয়েছিলাম প্রেরণা.

আশাকরি এটা সাহায্য করবে!


আপনি কি এমন একটি স্ট্রিংয়ে তারিখ রূপান্তর করার চেষ্টা করছেন?

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

Date.prototype.getISOString = function() {
    var zone = '', temp = -this.getTimezoneOffset() / 60 * 100;
    if (temp >= 0) zone += "+";
    zone += (Math.abs(temp) < 100 ? "00" : (Math.abs(temp) < 1000 ? "0" : "")) + temp;

    // "2009-6-4T14:7:32+10:00"
    return this.getFullYear()   // 2009
         + "-"
         + (this.getMonth() + 1) // 6
         + "-"
         + this.getDate()       // 4
         + "T"
         + this.getHours()      // 14
         + ":"
         + this.getMinutes()    // 7
         + ":"
         + this.getSeconds()    // 32
         + zone.substr(0, 3)    // +10
         + ":"
         + String(temp).substr(-2) // 00
    ;
};

ইউটিসি সময়টিতে যদি এটির প্রয়োজন হয়, তবে get getC * সহ সমস্ত পেতে * ফাংশনগুলি প্রতিস্থাপন করুন, যেমন: getUTCFullYear, getUTCMonth, getUTCHours ... এবং তারপরে ব্যবহারকারীর টাইমজোন অফসেটের পরিবর্তে শেষে "+00: 00" যোগ করুন।


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

আপনি পৃষ্ঠায় একটি datePicker প্রয়োজন নেই। ডক্সগুলিতে দেওয়া উদাহরণটির মতো আপনি কেবল কিছু বলতে পারেন:

$.parseDate('yy-mm-dd', '2007-01-26');

আমি আবিষ্কার করেছি যে স্টিভেন date.format.js এর 1.2.3 সংস্করণটি আমি যা চাই তা ঠিক করে। এটি আপনাকে একটি জাভাস্ক্রিপ্ট তারিখের জন্য একটি বিন্যাস স্ট্রিং সরবরাহ করতে এবং স্থানীয় সময় থেকে UTC রূপান্তর করতে দেয়। আমি এখন ব্যবহার করছি কোড এখানে:

// JavaScript dates don't like hyphens!    
var rectifiedDateText = dateText.replace(/-/g, "/");
var d = new Date(rectifiedDateText);

// Using a predefined mask from date.format.js.
var convertedDate = dateFormat(d, 'isoUtcDateTime'); 

এই পদ্ধতিটি আপনাকে প্রদান করবে: 2017-08-04T11:15:00.000+04:30 এবং আপনি কেবলমাত্র 2017-08-04T11:15:00.000 পেতে জোন ভেরিয়েবলকে উপেক্ষা করতে পারেন।

function getLocalIsoDateTime(dtString) {
    if(dtString == "")
        return "";
    var offset = new Date().getTimezoneOffset();
    var localISOTime = (new Date(new Date(dtString) - offset * 60000 /*offset in milliseconds*/)).toISOString().slice(0,-1);
    //Next two lines can be removed if zone isn't needed.
    var absO = Math.abs(offset);
    var zone = (offset < 0 ? "+" : "-") + ("00" + Math.floor(absO / 60)).slice(-2) + ":" + ("00" + (absO % 60)).slice(-2);
    return localISOTime + zone;
}

এই ফাংশন আমার জন্য সুন্দর কাজ করে।

function ParseDateForSave(dateValue) {
    // create a new date object
    var newDate = new Date(parseInt(dateValue.substr(6)));

    // return the UTC version of the date
    return newDate.toISOString();
}

এমনকি সহজ

myvar.setTime(myvar.getTime() + myvar.getTimezoneOffset() * 60000);

তারিখগুলি দিয়ে কাজ করার সময় আমার সুপারিশটি ব্যবহারকারী ইনপুট থেকে পৃথক ক্ষেত্রগুলিতে তারিখ বিশ্লেষণ করা। আপনি সম্পূর্ণ স্ট্রিং হিসাবে এটি ব্যবহার করতে পারেন, কিন্তু আপনি আগুন দিয়ে বাজানো হয়।

জাভাস্ক্রিপ্ট পৃথকভাবে বিভিন্ন বিন্যাসে দুটি সমান তারিখ আচরণ করতে পারেন।

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

কখনো এমন কিছু করবেন না:

new Date('date as text');

একবার আপনার তারিখটি ব্যবহারকারীর ইনপুট থেকে তার পৃথক ক্ষেত্রগুলিতে পার্স করা হলে, একটি তারিখ বস্তু তৈরি করুন। একবার তারিখ বস্তুটি তৈরি হয়ে গেলে এটি সময় অঞ্চল অফসেট যুক্ত করে UTC এ রূপান্তর করে। DST- এর কারণে তারিখের অবজেক্টের অফসেটটি ব্যবহার করা কতটা গুরুত্বপূর্ণ তা আমি চাপতে পারি না (এটি কেন আরেকটি আলোচনা তবে দেখাতে হবে)।

var year = getFullYear('date as text');
var month = getMonth('date as text');
var dayOfMonth = getDate('date as text');

var date = new Date(year, month, dayOfMonth);

var offsetInMs = ((date.getTimezoneOffset() * 60)  // Seconds
                 * 1000);                          //  Milliseconds

var utcDate = new Date(date.getTime + offsetInMs);

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


সহজ এবং মূঢ়

var date = new Date(); 
var now_utc =  Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),
 date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());

 return new Date(now_utc);


তারিখ / সময় পরিবর্তন না করেই ISO তে রূপান্তর করুন

var now = new Date(); // Fri Feb 20 2015 19:29:31 GMT+0530 (India Standard Time) 
var isoDate = new Date(now.getTime() - now.getTimezoneOffset() * 60000).toISOString();
//OUTPUT : 2015-02-20T19:29:31.238Z

তারিখ / সময় পরিবর্তন সঙ্গে আইএসও রূপান্তর (তারিখ / সময় পরিবর্তন করা হবে)

isoDate = new Date(now).toISOString();
//OUTPUT : 2015-02-20T13:59:31.238Z 

Fiddle লিঙ্ক


var myDate = new Date(); // Set this to your date in whichever timezone.
var utcDate = myDate.toUTCString();

date = '2012-07-28'; stringdate = new Date(date).toISOString();

সবচেয়ে নতুন ব্রাউজারে কাজ করা কর্তব্য। এটি ফায়ারফক্স 6.0 এ 2012-07-28T00:00:00.000Z করে


Date.prototype.toUTCArray= function(){
    var D= this;
    return [D.getUTCFullYear(), D.getUTCMonth(), D.getUTCDate(), D.getUTCHours(),
    D.getUTCMinutes(), D.getUTCSeconds()];
}

Date.prototype.toISO= function(){
    var tem, A= this.toUTCArray(), i= 0;
    A[1]+= 1;
    while(i++<7){
        tem= A[i];
        if(tem<10) A[i]= '0'+tem;
    }
    return A.splice(0, 3).join('-')+'T'+A.join(':');    
}







utc