در سال جدید، حتی اگر گزینهی daylight saving time را در تنظیمات ویندوز غیرفعال کنید: با اجرای قطعه کد زیر که سعی میکند DateTimeOffset.UtcNow را بر اساس اطلاعات منطقهی زمانی ایران، به زمان محلی تبدیل کند: 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+ را جهت تبدیلات منطقهی زمانی ایران به رسمیت میشناسد؛ مگر اینکه در بهروز رسانیهای بعدی ویندوز، این مشکل برطرف شود و یا ... میتوانید از این وصله، جهت, ...ادامه مطلب