Forum Discussion

eshenradgen's avatar
eshenradgen
Copper Contributor
Feb 02, 2023

Trying to set date field to midnight SharePoint regional time

I have a SharePoint app where the user can enter a date and update the date field in a SharePoint list item.   I want to store the time of the date field to be midnight SharePoint regional time.   ...
  • SvenSieverding's avatar
    SvenSieverding
    Feb 07, 2023

    Hi eshenradgen,

    Mhm... the default Javascript date always assumes that you either enter the date in your local timezone or as UTC... Then you can translate it into different timezones... 
    But you cannot parse a date from a different timzone using Javscript dates 

    But more complex date calculations work great with moment.js and moment-timezone.js


    If you include these libraries

     

    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.40/moment-timezone.min.js"></script>

     

     

    you can use moment to create UTC timestamps for midnight in every timezone

     

    //Central
    var dateString=moment.tz("2023-07-02T00:00", "America/Chicago").utc().format()
    // dateString is 2023-07-02T05:00:00Z
    
    //Pacific
    var dateString=moment.tz("2023-07-02T00:00", "America/Los_Angeles").utc().format()
    // dateString is 2023-07-02T07:00:00Z

     


    If you use "2023-07-02T05:00:00Z" with the former code (Or exchange line 6 from the lower code with line 2 from the upper)

     

    var itemCreateInfo = new SP.ListItemCreationInformation();
    this.oListItem = oList.addItem(itemCreateInfo);
    //Single line of text  
    oListItem.set_item('Title', 'Midnight Central');
    //Format local date to UTC 
    var dateString="2023-07-02T05:00:00Z"
    oListItem.set_item('MyDate', dateString);
    oListItem.update();
    clientContext.load(oListItem);
    clientContext.executeQueryAsync(
        function(){},
        function(){},
    ); 

     


    you create an item with a timestamp at midnight on a SharePoint site set to CST.

    From every timezone.

    Best Regards,
    Sven

    PS, but just for fun:

    If you now apply the following JSON formatting to that date column

     

      {  
        "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",  
        "elmType": "div",  
        "txtContent": {  
          "operator": "toLocaleString()",  
          "operands": [  
            "@currentField"  
          ]  
        }  
      }  

     

    then the time will be still stored in the timezone of the site, but will be displayed in the browser's local timezone. So it would display a a "Pacific" time, even if the site is set to CST.


Resources