Tag Cloud

CRM 2011 (161) CRM 4.0 (144) C# (116) JScript (109) Plugin (92) Registry (90) Techpedia (77) PyS60 (68) WScript (43) Plugin Message (31) Exploit (27) ShellCode (26) FAQ (22) JavaScript (21) Killer Codes (21) Hax (18) VB 6.0 (17) Commands (16) VBScript (16) Quotes (15) Turbo C++ (13) WMI (13) Security (11) 1337 (10) Tutorials (10) Asp.Net (9) Safe Boot (9) Python (8) Interview Questions (6) video (6) Ajax (5) VC++ (5) WebService (5) Workflow (5) Bat (4) Dorks (4) Sql Server (4) Aptitude (3) Picklist (3) Tweak (3) WCF (3) regex (3) Config (2) LINQ (2) PHP (2) Shell (2) Silverlight (2) TSql (2) flowchart (2) serialize (2) ASHX (1) CRM 4.0 Videos (1) Debug (1) FetchXml (1) GAC (1) General (1) Generics (1) HttpWebRequest (1) InputParameters (1) Lookup (1) Offline Plug-ins (1) OutputParameters (1) Plug-in Constructor (1) Protocol (1) RIA (1) Sharepoint (1) Walkthrough (1) Web.config (1) design patterns (1) generic (1) iframe (1) secure config (1) unsecure config (1) url (1)

Pages

Thursday, November 15, 2012

Complete DateDiff() Function

Perhaps the above function looks like the Visual Basic function of the same name. In fact it is loosely based on it. I was planning on recreating it in its complete form for your enjoyment, but, thankfully someone has already beat me to it. That someone is Rob Eberhardt of Slingshot Solutions. It's part of his excellent jsDate script. It's free to use as long as you give credit where credit is due. His function offers a lot of advantages over the simple one presented above. For starters, his can calculate the month interval, which cannot be done by dividing into the number of milliseconds since month lengths differ. It also supports setting the first day of the week to something other than Sunday. Finally, it adjusts for Daylight Savings Time, which affects intervals of a day ("d") and larger:

Date.DateDiff = function(p_Interval, p_Date1, p_Date2, p_FirstDayOfWeek){
p_FirstDayOfWeek = (isNaN(p_FirstDayOfWeek) || p_FirstDayOfWeek==0) ? vbSunday : parseInt(p_FirstDayOfWeek);

var dt1 = Date.CDate(p_Date1);
var dt2 = Date.CDate(p_Date2);

//correct Daylight Savings Ttime (DST)-affected intervals ("d" & bigger)
if("h,n,s,ms".indexOf(p_Interval.toLowerCase())==-1){
if(p_Date1.toString().indexOf(":") ==-1){ dt1.setUTCHours(0,0,0,0) }; // no time, assume 12am
if(p_Date2.toString().indexOf(":") ==-1){ dt2.setUTCHours(0,0,0,0) }; // no time, assume 12am
}


// get ms between UTC dates and make into "difference" date
var iDiffMS = dt2.valueOf() - dt1.valueOf();
var dtDiff = new Date(iDiffMS);

// calc various diffs
var nYears = dt2.getUTCFullYear() - dt1.getUTCFullYear();
var nMonths = dt2.getUTCMonth() - dt1.getUTCMonth() + (nYears!=0 ? nYears*12 : 0);
var nQuarters = parseInt(nMonths / 3);

var nMilliseconds = iDiffMS;
var nSeconds = parseInt(iDiffMS / 1000);
var nMinutes = parseInt(nSeconds / 60);
var nHours = parseInt(nMinutes / 60);
var nDays = parseInt(nHours / 24); //now fixed for DST switch days
var nWeeks = parseInt(nDays / 7);

if(p_Interval.toLowerCase()=='ww'){
// set dates to 1st & last FirstDayOfWeek
var offset = Date.DatePart("w", dt1, p_FirstDayOfWeek)-1;
if(offset){ dt1.setDate(dt1.getDate() +7 -offset); }
var offset = Date.DatePart("w", dt2, p_FirstDayOfWeek)-1;
if(offset){ dt2.setDate(dt2.getDate() -offset); }
// recurse to "w" with adjusted dates
var nCalWeeks = Date.DateDiff("w", dt1, dt2) + 1;
}

// return difference
switch(p_Interval.toLowerCase()){
case "yyyy": return nYears;
case "q": return nQuarters;
case "m": return nMonths;
case "y": // day of year
case "d": return nDays;
case "w": return nWeeks;
case "ww":return nCalWeeks; // week of year
case "h": return nHours;
case "n": return nMinutes;
case "s": return nSeconds;
case "ms":return nMilliseconds;
default : return "invalid interval: '" + p_Interval + "'";
}
}
var y2k = new Date(2000, 0, 1) //Month is 0-11 in JavaScript!
var today= new Date();
console.log('Months since the new millenium: ' + Date.DateDiff('m', y2k, today)); //displays 143

A Simple dateDiff() Function

There is no reason to write a function for each date/time interval; one function can contain all of the required intervals and return the correct value for the one we want. In the following function, the datepart argument tells it what interval we are after, where 'w' is a week, 'd' a day, 'h' hours, 'n' for minutes, and 's' for seconds:


// datepart: 'y', 'm', 'w', 'd', 'h', 'n', 's'
Date.dateDiff = function(datepart, fromdate, todate) {
datepart = datepart.toLowerCase();
var diff = todate - fromdate;
var divideBy = { w:604800000,
d:86400000,
h:3600000,
n:60000,
s:1000 };

return Math.floor( diff/divideBy[datepart]);
}
//Set the two dates
var y2k = new Date(2000, 0, 1);
var today= new Date();
console.log('Weeks since the new millenium: ' + Date.dateDiff('w', y2k, today)); //displays 625

Converting Milliseconds to other Intervals

As long as you can calculate the number of milliseconds in an interval, you can come up with a number by dividing the total number of milliseconds by the number of milliseconds in the desired interval. What's more, we can apply the modulus (%) operator to strip out that value to determine the next larger interval. The key is to always go from the smallest interval - milliseconds - to the largest - days:


Date.daysBetween = function( date1, date2 ) {
//Get 1 day in milliseconds
var one_day=1000*60*60*24;

// Convert both dates to milliseconds
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();

// Calculate the difference in milliseconds
var difference_ms = date2_ms - date1_ms;
//take out milliseconds
difference_ms = difference_ms/1000;
var seconds = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var minutes = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var hours = Math.floor(difference_ms % 24);
var days = Math.floor(difference_ms/24);

return days + ' days, ' + hours + ' hours, ' + minutes + ' minutes, and ' + seconds + ' seconds';
}

//Set the two dates
var y2k = new Date(2000, 0, 1);
var Jan1st2010 = new Date(y2k.getYear() + 10, y2k.getMonth(), y2k.getDate());
var today= new Date();
//displays "Days from Wed Jan 01 0110 00:00:00 GMT-0500 (Eastern Standard Time) to Tue Dec 27 2011 12:14:02 GMT-0500 (Eastern Standard Time): 694686 days, 12 hours, 14 minutes, and 2 seconds"
console.log('Days from ' + Jan1st2010 + ' to ' + today + ': ' + Date.daysBetween(Jan1st2010, today));

Calculating the Difference between Two Known Dates

Unfortunately, calculating a date interval such as days, weeks, or months between two known dates is not as easy because you can't just add Date objects together. In order to use a Date object in any sort of calculation, we must first retrieve the Date's internal millisecond value, which is stored as a large integer. The function to do that is Date.getTime(). Once both Dates have been converted, subtracting the later one from the earlier one returns the difference in milliseconds. The desired interval can then be determined by dividing that number by the corresponding number of milliseconds. For instance, to obtain the number of days for a given number of milliseconds, we would divide by 86,400,000, the number of milliseconds in a day (1000 x 60 seconds x 60 minutes x 24 hours):
 
Date.daysBetween = function( date1, date2 ) {
//Get 1 day in milliseconds
var one_day=1000*60*60*24;

// Convert both dates to milliseconds
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();

// Calculate the difference in milliseconds
var difference_ms = date2_ms - date1_ms;

// Convert back to days and return
return Math.round(difference_ms/one_day);
}

//Set the two dates
var y2k = new Date(2000, 0, 1);
var Jan1st2010 = new Date(y2k.getFullYear() + 10, y2k.getMonth(), y2k.getDate());
var today= new Date();
//displays 726
console.log( 'Days since '
+ Jan1st2010.toLocaleDateString() + ': '
+ Date.daysBetween(Jan1st2010, today));
The rounding is optional, depending on whether you want partial days or not.

jsDate: VBScript native Date functions emulated for Javascript


/*
Name: jsDate
Desc: VBScript native Date functions emulated for Javascript
Author: Rob Eberhardt, Slingshot Solutions - http://slingfive.com/
Note: see jsDate.txt for more info
*/

// constants
vbGeneralDate=0; vbLongDate=1; vbShortDate=2; vbLongTime=3; vbShortTime=4; // NamedFormat
vbUseSystemDayOfWeek=0; vbSunday=1; vbMonday=2; vbTuesday=3; vbWednesday=4; vbThursday=5; vbFriday=6; vbSaturday=7; // FirstDayOfWeek
vbUseSystem=0; vbFirstJan1=1; vbFirstFourDays=2; vbFirstFullWeek=3; // FirstWeekOfYear

// arrays (1-based)
Date.MonthNames = [null,'January','February','March','April','May','June','July','August','September','October','November','December'];
Date.WeekdayNames = [null,'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];




Date.IsDate = function(p_Expression){
return !isNaN(new Date(p_Expression)); // <-- review further
}

Date.CDate = function(p_Date){
if(Date.IsDate(p_Date)){ return new Date(p_Date); }

var strTry = p_Date.replace(/\-/g, '/').replace(/\./g, '/').replace(/ /g, '/'); // fix separators
strTry = strTry.replace(/pm$/i, " pm").replace(/am$/i, " am"); // and meridian spacing
if(Date.IsDate(strTry)){ return new Date(strTry); }

var strTryYear = strTry + '/' + new Date().getFullYear(); // append year
if(Date.IsDate(strTryYear)){ return new Date(strTryYear); }


if(strTry.indexOf(":")){ // if appears to have time
var strTryYear2 = strTry.replace(/ /, '/' + new Date().getFullYear() + ' '); // insert year
if(Date.IsDate(strTryYear2)){ return new Date(strTryYear2); }

var strTryDate = new Date().toDateString() + ' ' + p_Date; // pre-pend current date
if(Date.IsDate(strTryDate)){ return new Date(strTryDate); }
}

return false; // double as looser IsDate
//throw("Error #13 - Type mismatch"); // or is this better?
}



Date.DateAdd = function(p_Interval, p_Number, p_Date){
if(!Date.CDate(p_Date)){ return "invalid date: '" + p_Date + "'"; }
if(isNaN(p_Number)){ return "invalid number: '" + p_Number + "'"; }

p_Number = new Number(p_Number);
var dt = Date.CDate(p_Date);

switch(p_Interval.toLowerCase()){
case "yyyy": {
dt.setFullYear(dt.getFullYear() + p_Number);
break;
}
case "q": {
dt.setMonth(dt.getMonth() + (p_Number*3));
break;
}
case "m": {
dt.setMonth(dt.getMonth() + p_Number);
break;
}
case "y": // day of year
case "d": // day
case "w": { // weekday
dt.setDate(dt.getDate() + p_Number);
break;
}
case "ww": { // week of year
dt.setDate(dt.getDate() + (p_Number*7));
break;
}
case "h": {
dt.setHours(dt.getHours() + p_Number);
break;
}
case "n": { // minute
dt.setMinutes(dt.getMinutes() + p_Number);
break;
}
case "s": {
dt.setSeconds(dt.getSeconds() + p_Number);
break;
}
case "ms": { // JS extension
dt.setMilliseconds(dt.getMilliseconds() + p_Number);
break;
}
default: {
return "invalid interval: '" + p_Interval + "'";
}
}
return dt;
}



Date.DateDiff = function(p_Interval, p_Date1, p_Date2, p_FirstDayOfWeek){
if(!Date.CDate(p_Date1)){ return "invalid date: '" + p_Date1 + "'"; }
if(!Date.CDate(p_Date2)){ return "invalid date: '" + p_Date2 + "'"; }
p_FirstDayOfWeek = (isNaN(p_FirstDayOfWeek) || p_FirstDayOfWeek==0) ? vbSunday : parseInt(p_FirstDayOfWeek); // set default & cast

var dt1 = Date.CDate(p_Date1);
var dt2 = Date.CDate(p_Date2);

// correct DST-affected intervals ("d" & bigger)
if("h,n,s,ms".indexOf(p_Interval.toLowerCase())==-1){
if(p_Date1.toString().indexOf(":") ==-1){ dt1.setUTCHours(0,0,0,0) }; // no time, assume 12am
if(p_Date2.toString().indexOf(":") ==-1){ dt2.setUTCHours(0,0,0,0) }; // no time, assume 12am
}


// get ms between UTC dates and make into "difference" date
var iDiffMS = dt2.valueOf() - dt1.valueOf();
var dtDiff = new Date(iDiffMS);

// calc various diffs
var nYears = dt2.getUTCFullYear() - dt1.getUTCFullYear();
var nMonths = dt2.getUTCMonth() - dt1.getUTCMonth() + (nYears!=0 ? nYears*12 : 0);
var nQuarters = parseInt(nMonths / 3); //<<-- different than VBScript, which watches rollover not completion

var nMilliseconds = iDiffMS;
var nSeconds = parseInt(iDiffMS / 1000);
var nMinutes = parseInt(nSeconds / 60);
var nHours = parseInt(nMinutes / 60);
var nDays = parseInt(nHours / 24); // <-- now fixed for DST switch days
var nWeeks = parseInt(nDays / 7);


if(p_Interval.toLowerCase()=='ww'){
// set dates to 1st & last FirstDayOfWeek
var offset = Date.DatePart("w", dt1, p_FirstDayOfWeek)-1;
if(offset){ dt1.setDate(dt1.getDate() +7 -offset); }
var offset = Date.DatePart("w", dt2, p_FirstDayOfWeek)-1;
if(offset){ dt2.setDate(dt2.getDate() -offset); }
// recurse to "w" with adjusted dates
var nCalWeeks = Date.DateDiff("w", dt1, dt2) + 1;
}
// TODO: similar for 'w'?


// return difference
switch(p_Interval.toLowerCase()){
case "yyyy": return nYears;
case "q": return nQuarters;
case "m": return nMonths;
case "y": // day of year
case "d": return nDays;
case "w": return nWeeks;
case "ww":return nCalWeeks; // week of year
case "h": return nHours;
case "n": return nMinutes;
case "s": return nSeconds;
case "ms":return nMilliseconds; // not in VBScript
default : return "invalid interval: '" + p_Interval + "'";
}
}




Date.DatePart = function(p_Interval, p_Date, p_FirstDayOfWeek){
if(!Date.CDate(p_Date)){ return "invalid date: '" + p_Date + "'"; }

var dtPart = Date.CDate(p_Date);

switch(p_Interval.toLowerCase()){
case "yyyy": return dtPart.getFullYear();
case "q": return parseInt(dtPart.getMonth() / 3) + 1;
case "m": return dtPart.getMonth() + 1;
case "y": return Date.DateDiff("y", "1/1/" + dtPart.getFullYear(), dtPart) + 1; // day of year
case "d": return dtPart.getDate();
case "w": return Date.Weekday(dtPart.getDay()+1, p_FirstDayOfWeek); // weekday
case "ww":return Date.DateDiff("ww", "1/1/" + dtPart.getFullYear(), dtPart, p_FirstDayOfWeek) + 1; // week of year
case "h": return dtPart.getHours();
case "n": return dtPart.getMinutes();
case "s": return dtPart.getSeconds();
case "ms":return dtPart.getMilliseconds(); // <-- JS extension, NOT in VBScript
default : return "invalid interval: '" + p_Interval + "'";
}
}



Date.MonthName = function(p_Month, p_Abbreviate){
if(isNaN(p_Month)){ // v0.94- compat: extract real param from passed date
if(!Date.CDate(p_Month)){ return "invalid month: '" + p_Month + "'"; }
p_Month = DatePart("m", Date.CDate(p_Month));
}

var retVal = Date.MonthNames[p_Month];
if(p_Abbreviate==true){ retVal = retVal.substring(0, 3) } // abbr to 3 chars
return retVal;
}


Date.WeekdayName = function(p_Weekday, p_Abbreviate, p_FirstDayOfWeek){
if(isNaN(p_Weekday)){ // v0.94- compat: extract real param from passed date
if(!Date.CDate(p_Weekday)){ return "invalid weekday: '" + p_Weekday + "'"; }
p_Weekday = DatePart("w", Date.CDate(p_Weekday));
}
p_FirstDayOfWeek = (isNaN(p_FirstDayOfWeek) || p_FirstDayOfWeek==0) ? vbSunday : parseInt(p_FirstDayOfWeek); // set default & cast

var nWeekdayNameIdx = ((p_FirstDayOfWeek-1 + parseInt(p_Weekday)-1 +7) % 7) + 1; // compensate nWeekdayNameIdx for p_FirstDayOfWeek
var retVal = Date.WeekdayNames[nWeekdayNameIdx];
if(p_Abbreviate==true){ retVal = retVal.substring(0, 3) } // abbr to 3 chars
return retVal;
}


// adjusts weekday for week starting on p_FirstDayOfWeek
Date.Weekday=function(p_Weekday, p_FirstDayOfWeek){
p_FirstDayOfWeek = (isNaN(p_FirstDayOfWeek) || p_FirstDayOfWeek==0) ? vbSunday : parseInt(p_FirstDayOfWeek); // set default & cast

return ((parseInt(p_Weekday) - p_FirstDayOfWeek +7) % 7) + 1;
}





Date.FormatDateTime = function(p_Date, p_NamedFormat){
if(p_Date.toUpperCase().substring(0,3) == "NOW"){ p_Date = new Date() };
if(!Date.CDate(p_Date)){ return "invalid date: '" + p_Date + "'"; }
if(isNaN(p_NamedFormat)){ p_NamedFormat = vbGeneralDate };

var dt = Date.CDate(p_Date);

switch(parseInt(p_NamedFormat)){
case vbGeneralDate: return dt.toString();
case vbLongDate: return Format(p_Date, 'DDDD, MMMM D, YYYY');
case vbShortDate: return Format(p_Date, 'MM/DD/YYYY');
case vbLongTime: return dt.toLocaleTimeString();
case vbShortTime: return Format(p_Date, 'HH:MM:SS');
default: return "invalid NamedFormat: '" + p_NamedFormat + "'";
}
}


Date.Format = function(p_Date, p_Format, p_FirstDayOfWeek, p_firstweekofyear) {
if(!Date.CDate(p_Date)){ return "invalid date: '" + p_Date + "'"; }
if(!p_Format || p_Format==''){ return dt.toString() };

var dt = Date.CDate(p_Date);

// Zero-padding formatter
this.pad = function(p_str){
if(p_str.toString().length==1){p_str = '0' + p_str}
return p_str;
}

var ampm = dt.getHours()>=12 ? 'PM' : 'AM'
var hr = dt.getHours();
if (hr == 0){hr = 12};
if (hr > 12) {hr -= 12};
var strShortTime = hr +':'+ this.pad(dt.getMinutes()) +':'+ this.pad(dt.getSeconds()) +' '+ ampm;
var strShortDate = (dt.getMonth()+1) +'/'+ dt.getDate() +'/'+ new String( dt.getFullYear() ).substring(2,4);
var strLongDate = Date.MonthName(dt.getMonth()+1) +' '+ dt.getDate() +', '+ dt.getFullYear(); //

var retVal = p_Format;

// switch tokens whose alpha replacements could be accidentally captured
retVal = retVal.replace( new RegExp('C', 'gi'), 'CCCC' );
retVal = retVal.replace( new RegExp('mmmm', 'gi'), 'XXXX' );
retVal = retVal.replace( new RegExp('mmm', 'gi'), 'XXX' );
retVal = retVal.replace( new RegExp('dddddd', 'gi'), 'AAAAAA' );
retVal = retVal.replace( new RegExp('ddddd', 'gi'), 'AAAAA' );
retVal = retVal.replace( new RegExp('dddd', 'gi'), 'AAAA' );
retVal = retVal.replace( new RegExp('ddd', 'gi'), 'AAA' );
retVal = retVal.replace( new RegExp('timezone', 'gi'), 'ZZZZ' );
retVal = retVal.replace( new RegExp('time24', 'gi'), 'TTTT' );
retVal = retVal.replace( new RegExp('time', 'gi'), 'TTT' );

// now do simple token replacements
retVal = retVal.replace( new RegExp('yyyy', 'gi'), dt.getFullYear() );
retVal = retVal.replace( new RegExp('yy', 'gi'), new String( dt.getFullYear() ).substring(2,4) );
retVal = retVal.replace( new RegExp('y', 'gi'), Date.DatePart("y", dt) );
retVal = retVal.replace( new RegExp('q', 'gi'), Date.DatePart("q", dt) );
retVal = retVal.replace( new RegExp('mm', 'gi'), (dt.getMonth() + 1) );
retVal = retVal.replace( new RegExp('m', 'gi'), (dt.getMonth() + 1) );
retVal = retVal.replace( new RegExp('dd', 'gi'), this.pad(dt.getDate()) );
retVal = retVal.replace( new RegExp('d', 'gi'), dt.getDate() );
retVal = retVal.replace( new RegExp('hh', 'gi'), this.pad(dt.getHours()) );
retVal = retVal.replace( new RegExp('h', 'gi'), dt.getHours() );
retVal = retVal.replace( new RegExp('nn', 'gi'), this.pad(dt.getMinutes()) );
retVal = retVal.replace( new RegExp('n', 'gi'), dt.getMinutes() );
retVal = retVal.replace( new RegExp('ss', 'gi'), this.pad(dt.getSeconds()) );
retVal = retVal.replace( new RegExp('s', 'gi'), dt.getSeconds() );
retVal = retVal.replace( new RegExp('t t t t t', 'gi'), strShortTime );
retVal = retVal.replace( new RegExp('am/pm', 'g'), dt.getHours()>=12 ? 'pm' : 'am');
retVal = retVal.replace( new RegExp('AM/PM', 'g'), dt.getHours()>=12 ? 'PM' : 'AM');
retVal = retVal.replace( new RegExp('a/p', 'g'), dt.getHours()>=12 ? 'p' : 'a');
retVal = retVal.replace( new RegExp('A/P', 'g'), dt.getHours()>=12 ? 'P' : 'A');
retVal = retVal.replace( new RegExp('AMPM', 'g'), dt.getHours()>=12 ? 'pm' : 'am');
// (always proceed largest same-lettered token to smallest)

// now finish the previously set-aside tokens
retVal = retVal.replace( new RegExp('XXXX', 'gi'), Date.MonthName(dt.getMonth()+1, false) ); //
retVal = retVal.replace( new RegExp('XXX', 'gi'), Date.MonthName(dt.getMonth()+1, true ) ); //
retVal = retVal.replace( new RegExp('AAAAAA', 'gi'), strLongDate );
retVal = retVal.replace( new RegExp('AAAAA', 'gi'), strShortDate );
retVal = retVal.replace( new RegExp('AAAA', 'gi'), Date.WeekdayName(dt.getDay()+1, false, p_FirstDayOfWeek) ); //
retVal = retVal.replace( new RegExp('AAA', 'gi'), Date.WeekdayName(dt.getDay()+1, true, p_FirstDayOfWeek) ); //
retVal = retVal.replace( new RegExp('TTTT', 'gi'), dt.getHours() + ':' + this.pad(dt.getMinutes()) );
retVal = retVal.replace( new RegExp('TTT', 'gi'), hr +':'+ this.pad(dt.getMinutes()) +' '+ ampm );
retVal = retVal.replace( new RegExp('CCCC', 'gi'), strShortDate +' '+ strShortTime );

// finally timezone
tz = dt.getTimezoneOffset();
timezone = (tz<0) ? ('GMT-' + tz/60) : (tz==0) ? ('GMT') : ('GMT+' + tz/60);
retVal = retVal.replace( new RegExp('ZZZZ', 'gi'), timezone );

return retVal;
}



// ====================================

/* if desired, map new methods to direct functions
*/
IsDate = Date.IsDate;
CDate = Date.CDate;
DateAdd = Date.DateAdd;
DateDiff = Date.DateDiff;
DatePart = Date.DatePart;
MonthName = Date.MonthName;
WeekdayName = Date.WeekdayName;
Weekday = Date.Weekday;
FormatDateTime = Date.FormatDateTime;
Format = Date.Format;



/* and other capitalizations for easier porting
isDate = IsDate;
dateAdd = DateAdd;
dateDiff = DateDiff;
datePart = DatePart;
monthName = MonthName;
weekdayName = WeekdayName;
formatDateTime = FormatDateTime;
format = Format;

isdate = IsDate;
dateadd = DateAdd;
datediff = DateDiff;
datepart = DatePart;
monthname = MonthName;
weekdayname = WeekdayName;
formatdatetime = FormatDateTime;

ISDATE = IsDate;
DATEADD = DateAdd;
DATEDIFF = DateDiff;
DATEPART = DatePart;
MONTHNAME = MonthName;
WEEKDAYNAME = WeekdayName;
FORMATDATETIME = FormatDateTime;
FORMAT = Format;
*/

Update Message

Updates an instance of an entity.

  
//# The following code example shows how to use the Update message.

// Set up the CRM service.
CrmAuthenticationToken token = new CrmAuthenticationToken();
// You can use enums.cs from the SDK\Helpers folder to get the enumeration for Active Directory authentication.
token.AuthenticationType = 0;
token.OrganizationName = "AdventureWorksCycle";

CrmService service = new CrmService();
service.Url = "http://:/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Create the account object.
account account = new account();

// Set the properties of the account object to be updated.
account.address1_line1 = "34 Market St.";
account.creditlimit = new CrmMoney();
account.creditlimit.Value = 500000;

// accountid is a key that references the ID of the account to be updated.
account.accountid = new Key();
// accountid.Value is the GUID of the record to be changed.
account.accountid.Value = new Guid("2B951FBC-1C56-4430-B23B-20A1349068F3");

// Create the target object for the request.
TargetUpdateAccount target = new TargetUpdateAccount();

// Set the properties of the target object.
target.Account = account;

// Create the request object.
UpdateRequest update = new UpdateRequest();

// Set the properties of the request object.
update.Target = target;

// Execute the request.
UpdateResponse updated = (UpdateResponse)service.Execute(update);





CanBeReferencingRequest


// ** CanBeReferencingRequest **

//Checks whether the specified entity can be the referencing entity in one-to-many

//relationship.

// REQUEST

CanBeReferencingRequest canBereferencingRequest = new CanBeReferencingRequest

{

EntityName = "referencingEntity(Referencing Entity)"

};



// RESPONSE

CanBeReferencingResponse canBeReferencingResponse =

(CanBeReferencingResponse)_service.Execute(canBereferencingRequest);



// Verify RESPONSE

if (!canBeReferencingResponse.CanBeReferencing)

{

Console.WriteLine(

"Entity {0} can't be the referencing entity in this one-to-many relationship",

"referencingEntity(Referencing Entity)");

}