簡體   English   中英

如何在不同的時區(如UTC,GMT,PST,MST,EST,CST等)上運行調度程序

[英]How to run a scheduler on different time zones like UTC, GMT, PST, MST, EST, CST etc

我有一個來自不同國家/地區的不同用戶的數據庫,這些用戶已在我們的應用程序中注冊。 可能有用戶在不同國家有朋友。

假設有3個用戶A,B,C。 A在印度,B在舊金山,C在意大利,A,B,C這三個都是朋友。

A的生日是2014年8月29日。 因此,在2014年8月29日上午12:00:00(A的時區),我需要通過B相對於A的時區,通過服務器向B&C發送A的生日通知。

如果我選擇每天在服務器時間上午12:00:00運行調度程序,則它可能與A的時區不同。 可能在A的時區之前或之后幾分鍾。 但是我只需要在A的時區發送通知。

我需要實現此功能。 如果有人可以幫助我,我將非常高興。

請幫助我實現此功能

與時間一起保存生日意味着如果a的生日是1/1/89,則對於服務器,其生日可能根據服務器時間為1/1/89 3:00 PM,然后每隔10分鍾運行一次通知發送者代碼,因此如果發生用戶的生日,則應發送該消息。

根據服務器時間,數據庫中的生日將是這樣。 1/1/89 2:00 PM 2/5/90 12:AM 6/7/92 02:AM等。通知發送者將不斷檢查事件發生的時間,它將根據需要發送消息。

一個主意:

  • 在數據庫中,請勿存儲完整的生日。 只是日期部分。 或在時間部分存儲00:00:00。
  • 為每個用戶存儲其時區。 您可以從其他信息(例如當前城市或國家/地區)推斷出這一點。
  • 將您的調度程序設置為每小時運行一次。 並不是每天都這樣。
  • 每次調度程序運行時,獲取合格用戶的列表。 這將是誰的b'dy是的當前時間的一小時內的用戶。
  • 用戶的當前時間可以計算為當前UTC時間加上時區。
  • 計算和搜索可以在一個SQL中進行,確切的sql語句將取決於Oracle / MySQl / SQlServer。
  • 大多數數據庫都有獲取當前UTC時間的方法。
  • 請注意,此機制的最大錯誤時間為1小時。 但是使用快樂郵件,這並不是什么大問題。
  • 還請注意,有些城市和國家/地區的時區不是恆定的。 對於印度,常數為+5 1/2,但對於美國城市而言,全年變化。 因此您的解決方案無論如何都不是完美的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM