خرید بک لینک
در سال جدید، حتی اگر گزینهی daylight saving time را در تنظیمات 1 غیرفعال کنید:


با اجرای قطعه کد زیر که سعی میکند DateTimeOffset.UtcNow را بر اساس 1 منطقهی زمانی 1، به زمان محلی تبدیل کند:
var iranStandardTime = TimeZoneInfo.GetSystemTimeZones()
                                       .FirstOrDefault(timeZoneInfo =>
                                                           timeZoneInfo.StandardName.Contains("Iran",
                                                            StringComparison.OrdinalIgnoreCase));
Console.WriteLine(iranStandardTime.BaseUtcOffset); // 03:30:00

var dateTime = DateTimeOffset.UtcNow;
var iranTime = TimeZoneInfo.ConvertTime(dateTime, iranStandardTime);
Console.WriteLine(iranTime); // 06/02/1402 12:34:23 ?.? +04:30 --> this is coming from the `adjustment rules`
باز هم در خروجی، درنظر گرفته شدن 4:30+ مشخص است و به همین جهت در تبدیل صورت گرفته، ساعت نهایی، یک ساعت جلوتر از ساعت واقعی خواهد بود. علت آن هم به مفهوم dynamic daylight saving time برمیگردد که اطلاعات بیشتر آنرا در این مطلب میتوانید مطالعه کنید.

دات نت نیز در پشت صحنه، همین اطلاعات را دریافت و تحت عنوان Adjustment rules، مورد استفاده قرار میدهد:


همانطور که مشاهده میکنید، آخرین گزینهی پویای آن به بازهی زمانی 1402 تا سال 9378 تنظیم شدهاست و در طی این بازه، دات نت هنوز همان 4:30+ را جهت 1 منطقهی زمانی ایران به رسمیت میشناسد؛ مگر اینکه در بهروز رسانیهای بعدی ویندوز، این 1 برطرف شود و یا ... میتوانید از این وصله، جهت رفع این مشکل استفاده کنید:


پس از افزودن اطلاعات این فایل رجیستری به ویندوز، نه فقط daylight saving time غیرفعال میشود، بلکه اجزای dynamic daylight saving time نیز از سال 2023 به بعد، غیرفعال خواهند شد و اینبار دات نت، سال 1401 را سال آخر تنظیمات ساعت تابستانی درنظر میگیرد:


مابقی موارد در اینجا ذکر نشدهاند، چون به عنوان ورودی دارای daylight saving time غیرفعال تشخیص داده میشوند.

اکنون اگر مجددا همان مثال ابتدای بحث را اجرا کنیم، بجای 4:30، عدد 3:30 قابل مشاهده است.
 

برچسب: نویسنده: دانلودی تاريخ: يکشنبه 10 ارديبهشت 1402 ساعت: 17:13

صفحه بندی

خبرنامه