ورود

View Full Version : اختلاف زمانی و مشکل ذخیره تاریخ و ساعت



mohandesirani
سه شنبه 28 تیر 1390, 16:56 عصر
با سلام
چند وقتی هست که به یه مشکلی خوردم اونم اینکه سرور هاستم توی آمریکا است و با اینجا 8:30 ساعت فاصله داره .یعنی ما 8:30 ساعت از اونا ساعتمون جلوتره. از طرفی تو دیتابیسم فیلد تاریخ دارم که از نوع datestamp تعریفش کردم .مثلا این مشکل هست که اگه امروز 28.4.90 باشه و ساعت 6:30 بعدازظهر اونجا مورخ 19.7.2011 و ساعت 10:30 صبح هستش.حالا اگه اینجا مثلا ساعت 00:01 بامداد 29.4.90 بشه. تاریخ سرور همون 19.7.2011 هستش یعنی توی تبدیل هم همون 28 تیر رو به مامیده.

خوب حالا فرض بر اینه که ما بیایم و 8:30 رو به ساعت سرور اضافه کنیم .اون وقت باید ببینیم که از 24 بیشتر میشه یا نه که اگه بیشتر شد روز هم باید یه روز جلوتر بره . حالا اگه ما این کارو کنیم سیستم مثلا واسه ماههای 31 روزه 30 روزه و سال کبیسه و ... چجوری عمل می کنه؟

بنظر شما منطقی اینکه که همون ساعت محلی سرور و تاریخ محلیش رو تو دیتابیس بریزم یا این که 8:30 رو اضافه کنم بعد تو دیتابیس بریزم؟

من می خوام که کاربرام تاریخ رو شمسی ببینن و شمسی ثبت کنن .مثلا می خوام واسه یه قسمت خاص اگه مثلا امتحان ساعت 16:30 بعد ازظهر به وقت ایران هست افراد بتونن مثلافقط تا 8 ساعت قبل اون ساعت ثبت نام کنن یا مثلا فقط تا دو روز قبلش بتونن ثبت نام کنن.

مشکل دیگه در مورد گزارش گیریه.اگه بخوایم گزارش دقیق بگیریم اون وقت چی ؟

ممنون.

Mirmahdi90
شنبه 15 مرداد 1390, 14:15 عصر
سلام
شما با استفاده از تابع Date.setTime(int) l میتونی این مشکل رو حل کنی و نیازی هم نیست که نگران مشکلاتی که گفتی ( اگه از 24 گذشت چی میشه و ... ) باشی.
قضیه اینه که هر متغیر از نوع Date یه فیلد داره که تعداد دقیق میلی ثانیه های گذشته از راس ساعت 00:00:00 شروع سال 1990 رو تو خود نگه میداره و تو با زیاد کردن اون به راحتی میتونی 8 ساعت تاریخ رو جلو ببری:

public Date forward8Hours( Date oldDate )
{
Date newDate = new Date();
newDate.setTime(oldDate.getTime() + 8 * 60 * 60 * 1000);//8 hours in MiliSeconds
return newDate;
}