تبدیل تاریخ

آذر ۲۸م, ۱۳۸۸

بارها در این باره، با خیلی ها بحث کردم. حالا یک بار قصد دارم اینجا هم همه چیز را توضیح بدهم، شاید برای بار آخر. مساله تبدیل تاریخ تقریبا مشکل همه هست. هر نو برنامه نویسی، بلافاصله زمانی که نیازمند نوشتن یک برنامه باشد، به اولین موضوعی که فکر میکند، تبدیل تاریخ هجری به میلادی و برعکس است. من کلا با تاریخ قمری کاری ندارم، اهمیتی هم برای من نداشته و ندارد، ولی این بحث شامل تاریخ قمری یا اصولا هر تاریخ دیگری که نیازمند تبدیل به میلادی و برعکس برای آن وجود داشته باشد می شود.

1- تعریف تاریخ در ویندوز

تاریخ در ویندوز، یک عدد اعشاری است، قسمت صحیح آن ، تعداد روزهایی است که از اولین روز اولین ماه سال 1900 گذشته است. قسمت اعشاری هم کسری از روز است که تا لحضه مورد نظر گذشته است. مثلا 0.5 یعنی 12 ظهر، 0.25 یعنی 6 صبح و 0.75 یعنی 6 بعد از ظهر و الی آخر. مثلا عدد 1.5 یعنی 1 روز بعد از روز مبنا، ساعت 12 ظهر. البته مناطق زمانی هم در این مبنا تاثیر دارند و در صورت لزوم باید در نظر گرفته شوند .این تعریف، در دلفی هم رعایت شده است. و تا آنجا که میدانم، در مورد .NET هم به همین صورت است. (اگر کسی اطلاع دقیق تری دارد خبر بدهد، اصولا من از دات نت فراری هستم :) )

2-تعریف تاریخ در لینوکس

تاریخ در لینوکس یک عدد صحیح است، که نشانگر تعداد ثانیه های (در بعض نسخه ها و جاوا میلی ثانیه) پس از نیمه شب روز اول، ماه اول سال 1970 است. البته این تعریف به علت اینکه از ثانیه ها استفاده میکند، با نواحی زمانی نیز تغییر میکند، مثلا برای تاریخ ما، این مبنا سه ساعت و نیم جلوتر است. یعنی در هر منطقه زمانی عدد تاریخ با منطقه زمانی دیگر در یک لحظه متفاوت است. جاوا، PHP و Ansi C هم از این تعریف استفاده میکنند.

3- تبدیل تاریخ

تبدیل تاریخ، همیشه روشی است برای تبدیل یک مبنا (مثلا شمسی) به مبنای دیگر (مثلا میلادی) اما کی؟ در چه شرایطی؟
خواندن ادامه این مطلب »