در کار مایکلز یک تفاوت ظریف اما اغلب مهم بین ساعت 24:00 و ساعت 00:00 وجود دارد، اما اکسل از ساعت 24:00 پشتیبانی نمی کند. "نیمه شب" ساعت 00:00:00 است و فقط متعلق به روز بعد شناخته می شود. مایکل متعجب است که آیا راهی برای تعیین ساعت 24:00 وجود دارد، به عنوان مثال، "نیمه شب" که یک روز به پایان می رسد، به جای شروع یک روز، و در آن تاریخ/زمان با عملکردهای عادی کار می کند؟
قبل از پاسخ به سؤال، درک این نکته مهم است که نیمه شب زمانی برای خودش است. آن به سادگی یک لحظه است، کسری از کسری از ثانیه. وقتی زمان را به صورت دیجیتالی با ثانیه نشان می دهیم، ساعت 00:00:00 معمولا نیمه شب است و 24:00:00 زمان وجود ندارد. چرا؟ زیرا ثانیه قبل به صورت 23:59:59 ذکر می شود و وقتی یک ثانیه دیگر اضافه می کنید، ساعت به 24:00:00 تیک نمی زند و سپس ثانیه بعدی به 24:00:01 تبدیل می شود. فقط 24 ساعت در روز وجود دارد، و آن ساعت ها از 0 تا 23 شماره گذاری می شوند، نه از 1 تا 24. بنابراین وقتی از ساعت 23:59:59 "تیک" می زنید، زمان به 00:00:00 تبدیل می شود.
می توان چنین فرض کرد که روز در واقع تا ساعت 00:00:01 آغاز نمی شود و در ساعت 24:00 به پایان می رسد، اما این احساس عمومی در میان اکثر افرادی که با زمان کار می کنند نیست. احساس این است که از آنجایی که ساعت ها با استفاده از محدوده صفر شمارش می شوند، ثبات حکم می کند که ثانیه ها نیز با استفاده از محدوده صفر شمارش شوند. همانطور که هر ساعت با صفر ثانیه شروع می شود، روز نیز باید انجام شود.
مایکروسافت با درک این موضوع که میتوان استدلالها را به هر طریقی بیان کرد (در مورد نحوه تعیین نیمهشب در اکسل)، مایکروسافت تصمیم گرفت همه چیز - ساعتها، دقیقهها و ثانیهها- را در محدودههای صفر قرار دهد. مایکروسافت در تعیین نحوه ذخیره تاریخ و زمان در یک کاربرگ، یک سیستم شماره سریال عددی ابداع کرد. قسمتی از شماره سریال در سمت چپ نقطه اعشار نشان دهنده تعداد روزهای پس از تاریخ شروع پایه (معمولاً 1 ژانویه 1900) و قسمت سمت راست نقطه اعشار نشان دهنده درصد یک روز از نیمه شب است. بنابراین، شماره سریال زیر را در نظر بگیرید:
26442.636805556
این نشاندهنده 3:17 بعد از ظهر در 23 مه 1972 است. اگر زمان یک ثانیه دیگر کلیک کرد (تا 3:17:01 بعد از ظهر)، آنگاه قسمت سمت راست نقطه اعشار به 0.63681713 یا 63.681713٪ از نیمه شب گذشته میشود. وقتی قسمت سمت راست نقطه اعشار 0 باشد (بنابراین شماره سریال فقط 26442 می شود)، آنگاه زمان 0٪ از نیمه شب گذشته است.
جالب است که اگر زمانی را 24:00:00 وارد کنید، اکسل این را نشان میدهد - نه به این دلیل که چنین زمانی را به صورت داخلی مجاز میکند، بلکه به این دلیل که فرض میکند زمان سپری شده را وارد کردهاید. اگر به جای آن تاریخ و زمانی مانند 2020/5/19 ساعت 24:00:00 را وارد کنید، اکسل آن را به عنوان تاریخ و زمان تجزیه می کند و آن را به 2020/5/20 ساعت 12:00 صبح تبدیل می کند.
بنابراین، پاسخ کوتاه به سؤال اصلی مایکلز این است که فرض او از نظر فنی نادرست است - نیمه شب یک لحظه انتقالی منحصر به فرد است که واقعاً به روز قبل یا روز بعد تعلق ندارد. با این حال، هنگام محاسبه ثانیه ها، یک محدوده شمارش مبتنی بر صفر توسط مایکروسافت پشتیبانی می شود و ثبات حکم می کند که زمان 00:00:00 متعلق به دقیقه جدید، ساعت جدید و روز جدید باشد. در چنین رویکرد حسابداری، ساعت 24:00:00 وجود ندارد، بنابراین به طور خودکار به عنوان 00:00:00 در روز جدید تجزیه می شود.
برای کسانی که باید در روز قبل زمان خود را حفظ کنند، روش معمولی برای دور زدن موضوع این است که هرگز وارد ساعت 24:00 نشوند. در عوض، 23:59:59 را وارد کنید و تفاوت دوم را برای همه مقاصد "از دست رفته" در نظر بگیرید.