تبدیل تاریخ
آذر ۲۸م, ۱۳۸۸
بارها در این باره، با خیلی ها بحث کردم. حالا یک بار قصد دارم اینجا هم همه چیز را توضیح بدهم، شاید برای بار آخر. مساله تبدیل تاریخ تقریبا مشکل همه هست. هر نو برنامه نویسی، بلافاصله زمانی که نیازمند نوشتن یک برنامه باشد، به اولین موضوعی که فکر میکند، تبدیل تاریخ هجری به میلادی و برعکس است. من کلا با تاریخ قمری کاری ندارم، اهمیتی هم برای من نداشته و ندارد، ولی این بحث شامل تاریخ قمری یا اصولا هر تاریخ دیگری که نیازمند تبدیل به میلادی و برعکس برای آن وجود داشته باشد می شود.
1- تعریف تاریخ در ویندوز
تاریخ در ویندوز، یک عدد اعشاری است، قسمت صحیح آن ، تعداد روزهایی است که از اولین روز اولین ماه سال 1900 گذشته است. قسمت اعشاری هم کسری از روز است که تا لحضه مورد نظر گذشته است. مثلا 0.5 یعنی 12 ظهر، 0.25 یعنی 6 صبح و 0.75 یعنی 6 بعد از ظهر و الی آخر. مثلا عدد 1.5 یعنی 1 روز بعد از روز مبنا، ساعت 12 ظهر. البته مناطق زمانی هم در این مبنا تاثیر دارند و در صورت لزوم باید در نظر گرفته شوند .این تعریف، در دلفی هم رعایت شده است. و تا آنجا که میدانم، در مورد .NET هم به همین صورت است. (اگر کسی اطلاع دقیق تری دارد خبر بدهد، اصولا من از دات نت فراری هستم :) )
2-تعریف تاریخ در لینوکس
تاریخ در لینوکس یک عدد صحیح است، که نشانگر تعداد ثانیه های (در بعض نسخه ها و جاوا میلی ثانیه) پس از نیمه شب روز اول، ماه اول سال 1970 است. البته این تعریف به علت اینکه از ثانیه ها استفاده میکند، با نواحی زمانی نیز تغییر میکند، مثلا برای تاریخ ما، این مبنا سه ساعت و نیم جلوتر است. یعنی در هر منطقه زمانی عدد تاریخ با منطقه زمانی دیگر در یک لحظه متفاوت است. جاوا، PHP و Ansi C هم از این تعریف استفاده میکنند.
3- تبدیل تاریخ
تبدیل تاریخ، همیشه روشی است برای تبدیل یک مبنا (مثلا شمسی) به مبنای دیگر (مثلا میلادی) اما کی؟ در چه شرایطی؟
خواندن ادامه این مطلب »
یک کار قدیمی
آذر ۱۹م, ۱۳۸۸
خیلی پیش میاد که نیاز به کمپرس کردن اطلاعات باشه. خیلی هم پیش میاد که دقیقا ندونی چطور جمله تو شروع کنی. مثل من، تو همین پست.
خیلی وقت پیش، همون اوایل شروع به کار با دلفی احتیاج شد که یه چیزی رو کمپرس کنم، مهم نبود چطوری، فقط باید کمپرس میشد. همون موقع برای اولین بار با کتابخانه مربوط به zlib آشنا شدم که به صورت اضافه توی سی دی دلفی 5 بود.
چند وقت بعد، یه جورایی به مشکل برخوردم. کتابخانه قدیمی بود و باید به روز میشد، متدها برای یک حالت خاص (بدون ZLIB Header ) اصلا پیش بینی نشده بود و برای ایجاد فایل gz. به این قابلیت احتیاج بود، پس دوباره این کتابخانه را برای دلفی ایجاد کردم.
بعدها متد bzip2 را هم اضافه کردم که اونهم از لحاظ کلی شبیه همین بود، فقط برای فایلهای .bz استفاده میشد.
امروز، دوباره فرصت کردم یه کم اینو سر و سامون بدم، bzip رو با نسخه جدیدش عوض کنم، و بعد هم کد رو توی SourceForge بذارم. نتیجه رو میتونید اینجا ببینید.
کلی مکافات داشتم با این پروتکل https انقدر کند بود که دیوونه شدم! اینم از مزایای کشور ماست، که گاهی با این مسایل روبرو میشی :(