আমি জানি যে এটি একটু দেরি হয়েছে, তবে আপনি টাইমজোন স্বাধীন হতে চাইলে তারিখগুলি পরিচালনা করার জন্য আমার সমাধানটি এখানে নিয়ে আসতে হয়েছিল। মূলত এটিতে ইউটিসিতে রূপান্তর জড়িত।
জাভাস্ক্রিপ্ট থেকে সার্ভারে :
টাইমজোন অফসেটটি সরানোর সাথে সাথে যুগের মান হিসাবে তারিখগুলি প্রেরণ করুন।
var d = new Date(2015,0,1)
$.ajax({
url: '/target',
params: { date: d.getTime() - (d.getTimezoneOffset() * 60 * 1000) }
});
সার্ভারটি 1420070400000 তারিখের পূর্বে হিসাবে গ্রহণ করে।
সার্ভারে, সেই যুগের মানটিকে একটি ডেটটাইম অবজেক্টে রূপান্তর করুন:
DateTime d = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(epoch);
এই মুহুর্তে তারিখটি কেবলমাত্র তারিখ / সময় হিসাবে ব্যবহারকারীরা সরবরাহ করেছিল is কার্যকরভাবে এটি ইউটিসি।
অন্য পথে যাচ্ছি :
সার্ভার যখন ইউটিসি-তে সম্ভবত ডাটাবেস থেকে ডেটা টেনে নেয়, তখন একটি মহাকাব্য হিসাবে পার্থক্য পান (উভয় তারিখের অবজেক্ট স্থানীয় বা ইউটিসি হয় তা নিশ্চিত করে):
long ms = (long)utcDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
বা
long ms = (long)localDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local)).TotalMilliseconds;
জাভাস্ক্রিপ্টটি যখন এই মানটি গ্রহণ করে, একটি নতুন তারিখের অবজেক্ট তৈরি করুন। তবে, এই তারিখের অবজেক্টটি স্থানীয় সময় ধরে নেওয়া হবে, সুতরাং আপনার বর্তমান টাইমজোন দ্বারা এটি অফসেট করা দরকার:
var epochValue = 1420070400000
var utcDateVal = new Date(epochValue);
var actualDate = new Date(utcDateVal.getTime() + (utcDateVal.getTimezoneOffset() * 60 * 1000))
console.log(utcDateVal);
console.log(actualDate);
আমি যতদূর জানি, এটি এমন যে কোনও সময় অঞ্চলের জন্য কাজ করা উচিত যেখানে আপনাকে টাইমজোন থেকে স্বতন্ত্র তারিখগুলি প্রদর্শন করতে হবে।