SharePoint应用程序 - 由于时区不同,JSON日期显示在实际日期之前一天 [英] SharePoint App - JSON date show one day prior from the actual date because of different Timezone

查看:71
本文介绍了SharePoint应用程序 - 由于时区不同,JSON日期显示在实际日期之前一天的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在提交记录后的前一天显示JSON日期。我的应用程序位于太平洋时区,过去2年我们没有遇到任何问题。现在我们将应用程序服务器移动到Colorado数据中心。日期问题从
开始显示,该字段在山区时间保存为9/4/2018 00:00:00(当在PST中访问应用程序时,它显示为太平洋的9/3/2018)。
From_Date To_Date 都是数据库中的DateTime字段。


From_Date:            parseJSonDate(item.From_Date),


To_Date:           parseJSonDate(item.To_Date),


这是返回mm / dd / yyyy的函数


函数parseJSonDate(jsonDate){



       var re = / - ?\d + /;


       var m = re.exec(jsonDate);


       var date = new Date(parseInt(m [0]));



       var month =(1 + date.getMonth())。toString();


       month = month.length> 1?月:'0'+月;


       var day = date.getDate()。toString();


       day = day.length> 1?日:'0'+日;



      返回月份+'/'+天+'/'+ date.getFullYear();


   }


我们真的不关心时间,但没有时间戳,它的给定日期差异现在。这是UI


< input class =" datepickerField" data-format =" MM / dd / yyyy hh:mm:ss"名称= QUOT; FROM_DATE"类型= QUOT;文本" data-bind ='value:From_Date'>


< input class =" datepickerField" data-format =" MM / dd / yyyy hh:mm:ss"名称= QUOT; TO_DATE"类型= QUOT;文本"数据绑定= '值:TO_DATE' >



$( '#myPartialViewDiv')上(QUOT;按一下[;," .datepickerField" ;,函数(){


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;!如果($(本).hasClass(QUOT ; hasDatepicker")){


               $(this)。 datepicker(


                   {


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;语言:成 'en',


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;          pick12HourFormat:true


                   }


  &n BSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; );


               $(this).datepicker(" show");


           }


       });



$(" .datepickerField").each(function(index){


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;(!validateDate($(本).VAL()))如果{


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; dateError = TRUE;


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;}


&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;});


$(" .datepickerField")日期选择器(


'p>&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; {


&NBSP;&NBSP;&NBSP; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;语言:成 'en',


&NBSP;&NBSP ;                 pick12HourFormat:true


 &nbs磷;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; }


           );




当我从上面的UI中选择时,它仍然没有加载日期时间。我相信我必须将太平洋时间与数据库中的日期一起存储,这样当我从数据库加载数据时,它会加载相同的日期。


应用程序服务器位于Mountain时间,但人们正在从太平洋时区访问该应用程序。你能帮忙解决这个问题吗?感谢您的任何建议时间吗?



Shri

解决方案

Shri -


建议以UTC格式存储日期/时间,并在您的插件/应用中渲染时将其转换为您的网站基于时区的区域设置。 


I have been having JSON date displaying previous day after submitting the records. My app was in pacific time zone and we didn’t have problem from past 2 years. Now we moved our application server to Colorado data center. The date issue started showing from that time as the field saves in Mountain Time as 9/4/2018 00:00:00(and it shows as 9/3/2018 in pacific when application accessed in PST). Both From_Date and To_Date are DateTime fields in the database.

From_Date:           parseJSonDate(item.From_Date),

To_Date:           parseJSonDate(item.To_Date),

Here is the function that returns the mm/dd/yyyy

function parseJSonDate (jsonDate) {

       var re = /-?\d+/;

       var m = re.exec(jsonDate);

       var date = new Date(parseInt(m[0]));

      var month = (1 + date.getMonth()).toString();

       month = month.length > 1 ? month : '0' + month;

       var day = date.getDate().toString();

       day = day.length > 1 ? day : '0' + day;

       return month + '/' + day + '/' + date.getFullYear();

   }

We really don’t care about the time but without Timestamp its giving date discrepancy now. Here is the UI

<input class="datepickerField" data-format="MM/dd/yyyy hh:mm:ss" name="From_Date" type="text" data-bind='value: From_Date'>

<input class="datepickerField" data-format="MM/dd/yyyy hh:mm:ss" name="To_Date" type="text" data-bind='value: To_Date'>

$('#myPartialViewDiv').on("click", ".datepickerField", function () {

           if (!$(this).hasClass("hasDatepicker")) {

               $(this).datepicker(

                   {

                       language: 'en',

                       pick12HourFormat: true

                   }

               );

               $(this).datepicker("show");

           }

       });

$( ".datepickerField" ).each(function( index ) {

               if (!validateDate($( this ).val())) {

                   dateError = true;

               }

           });

$(".datepickerField").datepicker(

               {

                   language: 'en',

                   pick12HourFormat: true

               }

           );

Its still not loading Date time when I select from the UI above. I believe I will have to store the pacific time along with the date in the database so that when I load the data from database, it loads the same date.

The application server is in Mountain time but people are accessing the application from pacific timezone. Will you please help fixing this? Appreciate your time on any advice?

Shri

解决方案

Shri-

Its recommended to store to the date/time in UTC format and while rendering in your addin/app convert that to your sites regional settings based timezone. 


这篇关于SharePoint应用程序 - 由于时区不同,JSON日期显示在实际日期之前一天的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆