ডেটটাইম এর টাইমজোন অফসেট জানে না। অফসেট বা টাইমজোন নাম (যেমন EAT, CEST, EST ইত্যাদি) ফেরত দেওয়ার জন্য কোনও অন্তর্নির্মিত পদ্ধতি নেই।
অন্যদের প্রস্তাবিত মত, আপনি নিজের তারিখটিকে ইউটিসিতে রূপান্তর করতে পারেন:
DateTime localtime = new DateTime.Now;
var utctime = localtime.ToUniversalTime();
এবং তারপরে কেবল পার্থক্য গণনা করুন:
TimeSpan difference = localtime - utctime;
এছাড়াও আপনি ডেটটাইম অফসেট ব্যবহার করে এক সময়কে অন্যটিতে রূপান্তর করতে পারেন:
DateTimeOffset targetTime = DateTimeOffset.Now.ToOffset(new TimeSpan(5, 30, 0));
তবে এটি ক্ষতিকারক সংকোচনের এক ধরণের - অফসেট একাই আপনাকে জানাতে পারে না যে এটি কোন সময় অঞ্চল হিসাবে দুটি পৃথক দেশ বিভিন্ন টাইম জোনে থাকতে পারে এবং কেবল বছরের অংশের জন্য একই সময় থাকতে পারে (যেমন দক্ষিণ আফ্রিকা এবং ইউরোপ)। এছাড়াও, সচেতন থাকুন যে গ্রীষ্মের দিবালোক সংরক্ষণের সময়টি বিভিন্ন তারিখে প্রবর্তিত হতে পারে (EST বনাম সিইটি - একটি 3-সপ্তাহের পার্থক্য)।
আপনি টাইমজোনআইফো ক্লাস ব্যবহার করে আপনার স্থানীয় সিস্টেমের সময় অঞ্চলটির নাম পেতে পারেন:
TimeZoneInfo localZone = TimeZoneInfo.Local;
localZone.IsDaylightSavingTime(localtime) ? localZone.DaylightName : localZone.StandardName
আমি গেরি শেঙ্কের সাথে একমত, দয়া করে তাঁর প্রস্তাবিত নিবন্ধটি পড়ুন।