当前位置: 首页 > 知识库问答 >
问题:

Swift-Date格式化程序返回不需要的时间

孔海超
2023-03-14

如果我将“2019-01-01T00:00:00+0000”转换为日期,我希望该日期为字符串中的日期-2019年1月1日。如果我计算时间部分的秒数,我希望结果为零。

问题是,当我将我的字符串转换为日期时,它存储在UTC时区中。我的区域设置为“en_us_posix”,我的时区设置为当前。我的日期格式化程序使用“yyyy-mm-dd't'hh:mm:ssz”。我知道最后的Z是UTC的意思,但是我似乎想不出正确的字段符号来得到我想要的结果。

func convertToDate(_ dateString: String) -> Date {
   let dateFormatter = DateFormatter()
   dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
   dateFormatter.locale = Locale(identifier: "en_US_POSIX")
   dateFormatter.timeZone = .current
   let date = dateFormatter.date(from: dateString)
      else {
         print("DATE ERROR:", dateString)
         return Date()
      }
   return date
} 

共有1个答案

尚鸿才
2023-03-14

如果您确定要解析的日期字符串总是以+xxxx格式的时区结束,那么您可以从字符串中剪掉该时区,然后将剩余的字符串解析为本地时间。

func convertToDate(_ dateString: String) -> Date? {
    let minusTZ = String(dateString.dropLast(5)) // Assume the string ends with a +9999 timezone
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    let date = dateFormatter.date(from: minusTZ)
    return date
}

这将为您提供一个本地日期,在原始字符串中具有相同的日期和时间,而不考虑原始字符串的时区。

 类似资料:
  • 我正在尝试Eclipse自动格式化程序,但我找不到合适的选项来按照我的喜好格式化。

  • 问题内容: 这仅返回结果,我需要返回全部89%。有任何想法如何做吗? 问题答案: 简单的解决方案: 更漂亮的解决方案: 最漂亮的解决方案:

  • 相对moment来说十分轻量的实现。 使用 import { dateFormat } from 'vux' dateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss') 作为 filter 使用 import { dateFormat } from 'vux' export default { filters: { dateFormat } }

  • 本节提供了一个实例来演示如何使用DateFormat类和SimpleDateFormat类格式化Date对象,以及如何将格式化后的字符串追加到指定的字符串后面,最后演示了修改时区的方法。 例子 : 格式化Date对象 实例的代码如下: package chapter8; import java.text.SimpleDateFormat; import java.text.DateFormat;

  • Locale可用于在SimpleDateFormat类中的模式上创建特定于语言环境的格式。 请参阅以下使用特定于语言环境的SimpleDateFormat类的示例。 IOTester.java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.

  • DateFormat类提供各种格式来一起格式化日期和时间。 将使用DateFormat.getDateTimeInstance()方法。 请参阅下面的示例。 在下面的示例中,我们将展示如何使用不同的格式来设置日期和时间的格式。 IOTester.java import java.text.DateFormat; import java.util.Date; public class I18NTes