簡體   English   中英

iOS 將 NSDate 的 UTC 日期轉換為 Localtime 以獲取本地通知

[英]iOS Convert UTC date of NSDate to Localtime fo local notifications

我在將 NSDate日期轉換為本地 DateTime 時遇到問題。 我正在使用本地通知,我的fireDate屬性沒問題,除了我的日期中的 UTC 組件。

這是 NSDate 日期並將日期轉換為我的本地時區

在此處輸入圖片說明

這是我在此處找到的轉換代碼Convert UTC NSDate to local Timezone Objective-C

NSDate *someDateInUTC = [NSDate date];
NSTimeInterval timeZoneSeconds = [[NSTimeZone localTimeZone] secondsFromGMT];
NSDate *dateInLocalTimezone = [someDateInUTC dateByAddingTimeInterval:timeZoneSeconds];

我在我的時間組件中添加了 5 秒,所以這是我的 fireDate:

在此處輸入圖片說明

我正在使用推送通知,當用戶在應用程序中的某個位置時,我想從我的推送通知中向他顯示​​本地通知。 這段代碼在我的- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo方法中。 我已經實現了本地通知的方法:

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
  UIApplicationState applicationState = application.applicationState;
  if (applicationState == UIApplicationStateBackground) {
      [application presentLocalNotificationNow:notification];
  }
}

我認為dateInLocalTimezone中的這個 UTC 組件給我帶來了麻煩,但我不知道如何解決。

好的,所以我讀了你的問題。 然后我有下面的例子給你。

在這里,我將本地時間轉換為 UTC 時間。

    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"LLL d, yyyy - HH:mm:ss zzz";
    NSDate *utc = [fmt dateFromString:@"June 14, 2012 - 01:00:00 UTC"];
    fmt.timeZone = [NSTimeZone systemTimeZone];
    NSString *local = [fmt stringFromDate:utc];
    NSLog(@"%@", local);

暫無
暫無

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

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