var today = new Date();
var userTime = getUsersLocalDateTime(today);
function getServerURL(location) {
var urlReg = new RegExp(/http[s]?:\/\/[0-9.:]+\/[^\/]+/);
var ServerUrl = Xrm.Page.context.getServerUrl();
if (window.location.href.match(urlReg) != null) {
ServerUrl = window.location.href.match(urlReg).toString();
}
if (ServerUrl.match(/\/$/)) {
ServerUrl = ServerUrl.substring(0, ServerUrl.length - 1);
}
return ServerUrl;
}
function getUsersLocalDateTime(tDate) {
/// <summary>
/// Returns the date time from the server in the format present in the CRM user local settings.
/// Note: Include JSON2 and REST Operations library in the form before calling this function.
/// </summary>
/// <returns>User local date time.</returns>
//debugger;
var usersLocalDateTime = null;
var UserId = Xrm.Page.context.getUserId();
SDK.REST.retrieveRecordSync(UserId, "UserSettings", function retrieveUsersLocalDateTime(userSettings) {
/// <summary>
/// Called on the successfull retrieval of user settings.
/// </summary>
/// <param name="userSettings">Present execution object</param>
/// <returns>User local date time.</returns>
usersLocalDateTime = convertToLocalDateTime(userSettings.TimeZoneCode, tDate.toJSON());
}, retrieveUsersLocalDateTimeError);
return usersLocalDateTime;
}
function retrieveUsersLocalDateTimeError(error) {
alert(error);
}
function convertToLocalDateTime(timeZoneCode, dateTimeUTC) {
var _xmlHttpRequestObject = new XMLHttpRequest();
var _response = null;
_xmlHttpRequestObject.open("POST", getServerURL() + '/XRMServices/2011/Organization.svc/web', false);
_xmlHttpRequestObject.setRequestHeader("Accept", "application/xml, text/xml, */*");
_xmlHttpRequestObject.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
_xmlHttpRequestObject.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
var _soapRequest = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
_soapRequest += "<s:Body>";
_soapRequest += "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
_soapRequest += "<request i:type=\"b:LocalTimeFromUtcTimeRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">";
_soapRequest += "<a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
_soapRequest += "<a:KeyValuePairOfstringanyType>";
_soapRequest += "<c:key>TimeZoneCode</c:key>";
_soapRequest += "<c:value i:type=\"d:int\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">" + timeZoneCode + "</c:value>";
_soapRequest += "</a:KeyValuePairOfstringanyType>";
_soapRequest += "<a:KeyValuePairOfstringanyType>";
_soapRequest += "<c:key>UtcTime</c:key>";
_soapRequest += "<c:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">" + dateTimeUTC + "</c:value>";
_soapRequest += "</a:KeyValuePairOfstringanyType>";
_soapRequest += "</a:Parameters>";
_soapRequest += "<a:RequestId i:nil=\"true\" />";
_soapRequest += "<a:RequestName>LocalTimeFromUtcTime</a:RequestName>";
_soapRequest += "</request>";
_soapRequest += "</Execute>";
_soapRequest += "</s:Body>";
_soapRequest += "</s:Envelope>";
_xmlHttpRequestObject.onreadystatechange = function () {
if (_xmlHttpRequestObject.readyState == 4) {
if (_xmlHttpRequestObject.status == 200) {
_response = _xmlHttpRequestObject;
}
}
}
_xmlHttpRequestObject.send(_soapRequest);
if (_response != null && _response.responseXML != null && _response.responseXML.text != null) {
var _presentDate = new Date();
if (_response.responseXML.text != undefined) {
_presentDate.setYear(parseInt(_response.responseXML.text.substring(29, 33), 10));
_presentDate.setMonth(parseInt(_response.responseXML.text.substring(34, 36), 10) - 1);
_presentDate.setDate(parseInt(_response.responseXML.text.substring(37, 39), 10));
_presentDate.setHours(parseInt(_response.responseXML.text.substring(40, 42), 10));
_presentDate.setMinutes(parseInt(_response.responseXML.text.substring(43, 45), 10));
_presentDate.setSeconds(parseInt(_response.responseXML.text.substring(46, 48), 10));
}
else {
var userT = _response.responseXML.getElementsByTagName("c:value")[0].textContent;
_presentDate.setYear(parseInt(userT.substring(0, 4), 10));
_presentDate.setMonth(parseInt(userT.substring(5, 7), 10) - 1);
_presentDate.setDate(parseInt(userT.substring(8, 10), 10));
_presentDate.setHours(parseInt(userT.substring(11, 13), 10));
_presentDate.setMinutes(parseInt(userT.substring(14, 16), 10));
_presentDate.setSeconds(parseInt(userT.substring(17, 19), 10));
}
return _presentDate;
}
}
var userTime = getUsersLocalDateTime(today);
function getServerURL(location) {
var urlReg = new RegExp(/http[s]?:\/\/[0-9.:]+\/[^\/]+/);
var ServerUrl = Xrm.Page.context.getServerUrl();
if (window.location.href.match(urlReg) != null) {
ServerUrl = window.location.href.match(urlReg).toString();
}
if (ServerUrl.match(/\/$/)) {
ServerUrl = ServerUrl.substring(0, ServerUrl.length - 1);
}
return ServerUrl;
}
function getUsersLocalDateTime(tDate) {
/// <summary>
/// Returns the date time from the server in the format present in the CRM user local settings.
/// Note: Include JSON2 and REST Operations library in the form before calling this function.
/// </summary>
/// <returns>User local date time.</returns>
//debugger;
var usersLocalDateTime = null;
var UserId = Xrm.Page.context.getUserId();
SDK.REST.retrieveRecordSync(UserId, "UserSettings", function retrieveUsersLocalDateTime(userSettings) {
/// <summary>
/// Called on the successfull retrieval of user settings.
/// </summary>
/// <param name="userSettings">Present execution object</param>
/// <returns>User local date time.</returns>
usersLocalDateTime = convertToLocalDateTime(userSettings.TimeZoneCode, tDate.toJSON());
}, retrieveUsersLocalDateTimeError);
return usersLocalDateTime;
}
function retrieveUsersLocalDateTimeError(error) {
alert(error);
}
function convertToLocalDateTime(timeZoneCode, dateTimeUTC) {
var _xmlHttpRequestObject = new XMLHttpRequest();
var _response = null;
_xmlHttpRequestObject.open("POST", getServerURL() + '/XRMServices/2011/Organization.svc/web', false);
_xmlHttpRequestObject.setRequestHeader("Accept", "application/xml, text/xml, */*");
_xmlHttpRequestObject.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
_xmlHttpRequestObject.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
var _soapRequest = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
_soapRequest += "<s:Body>";
_soapRequest += "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
_soapRequest += "<request i:type=\"b:LocalTimeFromUtcTimeRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">";
_soapRequest += "<a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
_soapRequest += "<a:KeyValuePairOfstringanyType>";
_soapRequest += "<c:key>TimeZoneCode</c:key>";
_soapRequest += "<c:value i:type=\"d:int\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">" + timeZoneCode + "</c:value>";
_soapRequest += "</a:KeyValuePairOfstringanyType>";
_soapRequest += "<a:KeyValuePairOfstringanyType>";
_soapRequest += "<c:key>UtcTime</c:key>";
_soapRequest += "<c:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">" + dateTimeUTC + "</c:value>";
_soapRequest += "</a:KeyValuePairOfstringanyType>";
_soapRequest += "</a:Parameters>";
_soapRequest += "<a:RequestId i:nil=\"true\" />";
_soapRequest += "<a:RequestName>LocalTimeFromUtcTime</a:RequestName>";
_soapRequest += "</request>";
_soapRequest += "</Execute>";
_soapRequest += "</s:Body>";
_soapRequest += "</s:Envelope>";
_xmlHttpRequestObject.onreadystatechange = function () {
if (_xmlHttpRequestObject.readyState == 4) {
if (_xmlHttpRequestObject.status == 200) {
_response = _xmlHttpRequestObject;
}
}
}
_xmlHttpRequestObject.send(_soapRequest);
if (_response != null && _response.responseXML != null && _response.responseXML.text != null) {
var _presentDate = new Date();
if (_response.responseXML.text != undefined) {
_presentDate.setYear(parseInt(_response.responseXML.text.substring(29, 33), 10));
_presentDate.setMonth(parseInt(_response.responseXML.text.substring(34, 36), 10) - 1);
_presentDate.setDate(parseInt(_response.responseXML.text.substring(37, 39), 10));
_presentDate.setHours(parseInt(_response.responseXML.text.substring(40, 42), 10));
_presentDate.setMinutes(parseInt(_response.responseXML.text.substring(43, 45), 10));
_presentDate.setSeconds(parseInt(_response.responseXML.text.substring(46, 48), 10));
}
else {
var userT = _response.responseXML.getElementsByTagName("c:value")[0].textContent;
_presentDate.setYear(parseInt(userT.substring(0, 4), 10));
_presentDate.setMonth(parseInt(userT.substring(5, 7), 10) - 1);
_presentDate.setDate(parseInt(userT.substring(8, 10), 10));
_presentDate.setHours(parseInt(userT.substring(11, 13), 10));
_presentDate.setMinutes(parseInt(userT.substring(14, 16), 10));
_presentDate.setSeconds(parseInt(userT.substring(17, 19), 10));
}
return _presentDate;
}
}
No comments:
Post a Comment