title: Best practice for working with DateTime in C# relative to a user's local timezone
body: <p>I have an application with discount/deals for items that need to be configured to be enabled between specific datetimes i.e. <code>1st January 2022 7:00 am</code> to <code>31st January 2022 5:00 pm</code>.</p>
  <p>The user which sets these start and end dates can be based anywhere in the world but the end consumers need to observe these start and end dates relative to their local time.</p>
  <p>For example, the user setting up the deal is in Malaysia <code>GMT+8</code> for their end consumers across Indonesia (which has 3 separate time zones <code>GMT+7</code>, <code>GMT+8</code> and <code>GMT+9</code>) as well as some other end consumers in New Zealand (which has daylight savings and alternates between <code>GMT+12</code> and <code>GMT+13</code>)</p>
  <p>So, a consumer in <code>GMT+13</code> must observe the deal being available in <code>1st Jan 7am</code> while another consumer in <code>GMT+7</code> will observe it a few hours later but still <code>1st Jan 7am</code> in their local time.</p>
  <p>They observe these deals 1. On an app on their phone and 2. In-store where they claim these deals. So even though consumers could change the time zone on their phone to see the deal being available sooner - they must go in-store to claim them and can only do so once the timezone of the store reaches the available time.</p>
  <p>My current thought process is to store these without any time zone into using a <code>DateTime</code> type with <code>Unspecified</code> kind and any usage of this <code>DateTime</code> will be relative to the consumer/stores local time configured on the device. I don't see a way to do this with saving this date as <code>UTC</code></p>
  <p>Are there any alternative approaches?
  Is there better support with this use case by using the new <code>DateOnly</code> and <code>TimeOnly</code> structs?</p>