【问题标题】:Date formating, adding days to date日期格式,添加日期日期
【发布时间】:2018-09-10 09:36:32
【问题描述】:

这是我的第一个问题;

import Foundation 

let date1 = Date()
let date2 = Date().addingTimeInterval(3600)

if date1 == date2
{
          print("equals")
}
else if date1 > date2
{
          print("date1 is bigger")
}
else if date1 < date2
{
          print("date2 is bigger")
}

如果我写 print("date1") 或 print("date2"),它会给出以下输出

2018-09-10 08:56:49 +0000

我想写同样的例子,但date1date2 必须包含这两个属性:

格式:"dd.MM.yyyy"

语言环境:"tr_TR"

除此之外,这是我的第二个问题:

let date2 = Date().addingTimeInterval(3600)

如您所知,这 3600 的价值增加了​​一个小时。如何添加一天? 24*3600?有没有最短的路?

【问题讨论】:

  • 请注意,24*3600 并不总是一整天。有时会有夏令时/冬令时,第二天的同一时间可能是当前时间的 23 或 25 小时。查找Calendar 添加一天。“我想写相同的示例,但 date1 和 date2 必须包含这两个属性:”查找 DateFormatter
  • 感谢您提供这些详细信息。

标签: ios swift dateformatter


【解决方案1】:

试试

extension Date {
  func addDays(_ days: Int) -> Date {
    Calendar.autoupdatingCurrent.date(byAdding: .day, value: days, to: self)!
  }
}

【讨论】:

    【解决方案2】:

    就像@Larme 说的,你可能想看看Calendar

    var dateComponents = DateComponents()
    dateComponents.day = 1
    guard let date = Calendar.current.date(byAdding: dateComponents, to: Date()) else {  // Adding date components to current day.
       fatalError("date not found")
    }
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .short // dd.MM.yyyy
    dateFormatter.locale = Locale(identifier: "tr_TR") // Your preferred locale
    let dateWithLocale = dateFormatter.string(from: date)
    print(date)
    

    您可以使用Date 对象进行比较。只有当您需要打印它或将其用作String 时,您才需要进行格式化。

    【讨论】:

    • 亲爱的,@Rakesha Shastri,我有一个问题:假设,我有这个变量:var 生日:日期? = nil 我可以为这个生日变量设置一个当前日期值吗?但在简短的格式。 (不是字符串。你知道,生日是日期类型)谢谢。
    • @mannyCalavera Date 的实例没有格式。只有当它转换为字符串时,格式才是相关的。每当您使用日期进行显示时,您总是在使用之前将它们转换为字符串。这是您使用 DateFormatter 进行格式化部分的时候。为了比较,您可以使用日期对象。例如,假设您有 2 个整数,a 和 b (1 & 2)。在比较过程中,只要不更改值,它是否存储为DoubleFloatInt 都没有关系。但是当您显示它时,您会将其转换为特定格式。例如:1.00 使用字符串格式。
    • 明白。非常感谢。
    • 什么时候可以看到 fatalError("date not found")?我的意思是,有没有可能看到这个 fatalError 范围?它获取当前日期,然后添加一天。在哪种情况下,我们会看到这个 fatalError 范围。我只是想知道亲爱的@Rakesha Shastri
    • 喜欢下面的链接? stackoverflow.com/questions/5067785/…
    【解决方案3】:

    试试这个

    let today = Date() // OR your date here
    let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: today)
    let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: today)
    

    【讨论】:

      猜你喜欢
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      相关资源
      最近更新 更多