How to get the current date in unix-epoch
?
timeIntervalSince1970
prints the current time. Is there any way to get today's time at 12 AM?
For example, The current time is : Jan 7, 2018 5:30 PM. timeIntervalSince1970
will print the current time i.e. 1546903800000
.
Current date in epoch system will be Jan 7, 2018 00:00 AM. i.e 1546848000000
I would do this with components.
Assuming you need time in seconds as defined by time(2)
. If you need in milliseconds as defined by time(3)
, then you can multiply it out by 1000.
// Get right now as it's `DateComponents`.
let now = Calendar.current.dateComponents(in: .current, from: Date())
// Create the start of the day in `DateComponents` by leaving off the time.
let today = DateComponents(year: now.year, month: now.month, day: now.day)
let dateToday = Calendar.current.date(from: today)!
print(dateToday.timeIntervalSince1970)
// Add 1 to the day to get tomorrow.
// Don't worry about month and year wraps, the API handles that.
let tomorrow = DateComponents(year: now.year, month: now.month, day: now.day! + 1)
let dateTomorrow = Calendar.current.date(from: tomorrow)!
print(dateTomorrow.timeIntervalSince1970)
You can get yesterday by subtracting 1.
If you need this in the universal time (UTC, GMT, Z… whatever name you give universal time), then use the following.
let utc = TimeZone(abbreviation: "UTC")!
let now = Calendar.current.dateComponents(in: utc, from: Date())