为DateFormatter设置全局TimeZone

时间:2017-05-31 02:59:58

标签: swift3 dateformatter

我在这里搜索过但是找不到有用的线程来完成我想要的东西。我是Swift的新手,所以我对此并不了解。因此,我想设置一个特定的时区,用户可以通过应用程序的设置进行更改。我想要的是当用户改变所述时区时它应该通过应用程序反映出来。是的我可以在每个" DateFormatter"中设置时区。但是每次创建DateFormatter时我都不想写它。

当我创建DateFormatter的实例时,是否有办法将时区设置为用户选择的时区?是否可以使用DateFormatter的扩展来执行此操作?

1 个答案:

答案 0 :(得分:2)

您可以做的是DateFormatter的扩展,因为您将此Date设置为String以形成您的日期,因此为extension Date { struct CustomDateFormatter { static var currentTimeZone = TimeZone.current //Set default timeZone that you want static func dateFormatter(withFormat format: String) -> DateFormatter { let formatter = DateFormatter() formatter.timeZone = CustomDateFormatter.currentTimeZone formatter.dateFormat = format return formatter } } func toDateString(withFormat format: String) -> String { return CustomDateFormatter.dateFormatter(withFormat: format).string(from: self) } } extension String { func toDate(withFormat format: String) -> Date? { return Date.CustomDateFormatter.dateFormatter(withFormat: format).date(from: self) } } 制作两个扩展名为TimeZone一个用于Date

String

现在,您需要设置//Set timezone Date.CustomDateFormatter.currentTimeZone = TimeZone(abbreviation: "GMT")! //get date from String let date = "31-05-2017 07:30:05".toDate(withFormat: "dd-MM-yyyy HH:mm:ss") //get string from date with specific format let dateString = Date().toDateString(withFormat: "dd-MM-yyyy HH:mm:ss") 或想要将<?php if ($model->load($request->post()) { $model->bundle_numbers = implode(",", $model->bundle_numbers); $model->save(); return //wherever you want return } 转换为tuple,反之亦然,请使用此扩展程序。

pygame.Surface.blit(pygame.Surface((display_width, display_height)), welcomeMessageBackground, area = None, special_flags = 0)