DateTime.swift 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //
  2. // DateTime.swift
  3. // LoopFollow
  4. //
  5. // Created by Jon Fawcett on 6/16/20.
  6. // Copyright © 2020 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. class dateTimeUtils {
  10. static func getTimeIntervalMidnightToday() -> TimeInterval {
  11. let now = Date()
  12. let formatter = DateFormatter()
  13. formatter.dateFormat = "yyyy-MM-dd"
  14. let dayString = formatter.string(from: now)
  15. var midnight = dayString + " 00:00:00"
  16. let newFormatter = DateFormatter()
  17. newFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
  18. newFormatter.locale = Locale(identifier: "en_US")
  19. let newDate = newFormatter.date(from: midnight)
  20. guard let midnightTimeInterval = newDate?.timeIntervalSince1970 else { return 0 }
  21. return midnightTimeInterval
  22. }
  23. static func getTimeIntervalMidnightYesterday() -> TimeInterval {
  24. let now = Date().addingTimeInterval(-86400)
  25. let formatter = DateFormatter()
  26. formatter.dateFormat = "yyyy-MM-dd"
  27. let dayString = formatter.string(from: now)
  28. var midnight = dayString + " 00:00:00"
  29. let newFormatter = DateFormatter()
  30. newFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
  31. newFormatter.locale = Locale(identifier: "en_US")
  32. let newDate = newFormatter.date(from: midnight)
  33. guard let midnightTimeInterval = newDate?.timeIntervalSince1970 else { return 0 }
  34. return midnightTimeInterval
  35. }
  36. static func getTimeIntervalNHoursAgo(N: Int) -> TimeInterval {
  37. let today = Date()
  38. let nHoursAgo = Calendar.current.date(byAdding: .hour, value: -N, to: today)!
  39. return nHoursAgo.timeIntervalSince1970
  40. }
  41. static func getNowTimeIntervalUTC() -> TimeInterval {
  42. let now = Date()
  43. let formatter = DateFormatter()
  44. formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
  45. formatter.locale = Locale(identifier: "en_US")
  46. formatter.timeZone = TimeZone(abbreviation: "UTC")
  47. let utc = formatter.string(from: now)
  48. let day = formatter.date(from: utc)
  49. guard let utcTime = day?.timeIntervalSince1970 else { return 0 }
  50. return utcTime
  51. }
  52. static func nowMinusNHoursTimeInterval(N: Int) -> String {
  53. let today = Date()
  54. let nHoursAgo = Calendar.current.date(byAdding: .hour, value: -N, to: today)!
  55. let dateFormatter = DateFormatter()
  56. dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
  57. dateFormatter.locale = Locale(identifier: "en_US")
  58. dateFormatter.timeZone = TimeZone.init(secondsFromGMT: 0)
  59. let nHoursAgoString = dateFormatter.string(from: nHoursAgo)
  60. return nHoursAgoString
  61. }
  62. static func nowMinus10DaysTimeInterval() -> String {
  63. let today = Date()
  64. let oldDate = Calendar.current.date(byAdding: .day, value: -10, to: today)!
  65. let dateFormatter = DateFormatter()
  66. dateFormatter.dateFormat = "yyyy-MM-dd"
  67. dateFormatter.locale = Locale(identifier: "en_US")
  68. dateFormatter.timeZone = TimeZone.init(secondsFromGMT: 0)
  69. let dayString = dateFormatter.string(from: oldDate)
  70. return dayString
  71. }
  72. static func printNow() -> String {
  73. let date = Date()
  74. let formatter = DateFormatter()
  75. formatter.dateFormat = "HH:mm:ss"
  76. formatter.locale = Locale(identifier: "en_US")
  77. return formatter.string(from: date)
  78. }
  79. static func is24Hour() -> Bool {
  80. let dateFormat = DateFormatter.dateFormat(fromTemplate: "j", options: 0, locale: Locale.current)!
  81. return dateFormat.firstIndex(of: "a") == nil
  82. }
  83. }