Home > Software engineering >  Get seconds since 1970 at start of day regardless of timezone
Get seconds since 1970 at start of day regardless of timezone

Time:04-25

Say I've got User A and User B:

User A lives in GMT 9:30

User B lives in GMT 2:00

I've trying to construct a date at 12:00AM GMT for both users, so at any point in the day, both users get can the same timeIntervalSince1970.

In both timezones, constructing a date like

let date = Date()
date.timeIntervalSince1970 // 1650810600

Produces the same time, but if we try and shift the date to the start of the day,

let date = Calendar.current.startOfDay(for: Date())
date.timeIntervalSince1970 // GMT 9:30 1650810600.0
                           // GMT 2:00 1650837600.0

As you can see they're different.

So how can I create a Date object for 12:00 AM in GMT 0 in two timezones and produce the same date?

CodePudding user response:

To create 12:00AM GMT for the current point in time you have to set the time zone of the calendar to GMT 0

var calendar = Calendar.current
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
let date = calendar.startOfDay(for: Date())
date.timeIntervalSince1970
  • Related