با سلام؛ یک api بر اساس AspNetCore داریم که در یک جایی هاست شده که با ایران حدود 10 ساعت اختلاف ساعت داره. برای این api یک اپلیکیشن موبایل آندروید داریم که ممکنه هر کاربری در هر گوشه ای از دنیا نصبش کنه که یکی از کارهای این اپ زمانبندی و یادآوری کارهاست. ما برای این منظور و پوشش این اختلاف زمانیهای ناگزیر، فیلدهای تاریخ دیتابیس که SQL Server هست رو از نوع DateTimeOffset در نظر گرفتیم. سوالی که پیش میاد اینجاست.
اول اینکه: آیا اصلا لزومی برای اینکار بود یا با نوع datetime و تبدیل تمامی datetimeهای ارسالی به مقدار Utc و مدیریت این فیلدها کار راه میافتاد؟
دوم اینکه: آیا از سمت موبایل و اپلیکیشن، داده هایی که از نوع تاریخ ارسال میشن باید اونها هم فورمت DateTimeOffset داشته باشن؟ یا فقط داشتن TimeZone کاربر برای مدیریت تمامی درخواست هاش کافیه؟ البته با فرض ثابت بودن Timezone کاربر و سرور. آیا در این حالت تبدیل زمان وقایع افتاده در سمت سرور به UTC هم لازمه؟ یا فقط تبدیل مقادیر ارسالی کاربر کافیه؟
فرض کنیم که سوال اول و دوم حل شده. فرض میکنیم که در اپلیکیشن، کاربر درخواست یادآوری کاری رو راس ساعت 10 شب بر اساس زمان محلی خودش داره و از یکی دو روز قبل این درخواست رو ارسال کرده و در دیتابیس داریمش. (به یکی از دو روش سوال 1 یا 2). حالا روی سرور که با کاربرمون حدود 10 ساعت اختلاف ساعت داره و در آینده ممکنه تغییر هم کنه، چطوری باید زمان دقیق یادآوری ایشون بر اساس زمان محلی کاربر رو محاسبه واستخراج کرد؟
کل سوالهای بالا رو میشه به طور خلاصه چنین پرسید که در سناریوی مفروض بالا، گذشته از انتخاب نوع Datetime یا Datetimeoffset، آیا تبدیل و سپس نگهداری مقادیر از جنس تاریخ و ساعت به Utc در سناریوی تقریبا بین المللی بالا از بابت مدیریت همه چیز از جمله آلارمها و نوتیفیکیشنها لازم و به جاست یا نه؟