Tramite JavaScript è possibile leggere il valore del controllo SharePoint SharePoint:DateTimeControl lato client:

HTML

<SharePoint:DateTimeControl id="dtcBegin" runat="server"  DateOnly="false"  IsRequiredField="true" />
essendo un controllo composto che in pagina viene renderizzato con questi controlli (nel caso ci sia anche la parte dell'ora e minuti):

HTML

<input id="ctl00_PlaceHolderMain_dtcBegin_dtcBeginDate" name=ctl00$PlaceHolderMain$dtcBegin$dtcBeginDate type="text">
<select id="ctl00_PlaceHolderMain_dtcBegin_dtcBeginDateHours" name="ctl00$PlaceHolderMain$dtcBegin$dtcBeginDateHours"> <OPTION value="00.">00.</OPTION> <OPTION value="01.">01.</OPTION>
<select id="ctl00_PlaceHolderMain_dtcBegin_dtcBeginDateMinutes" name="ctl00$PlaceHolderMain$dtcBegin$dtcBeginDateMinutes"> <OPTION selected value="00">00</OPTION> <OPTION 
per leggere il valore ho creato questa funzione (richiede jQuery):

JavaScript

function sgartGetSPDateFieldValue(field, eng) {
  var objDate = $(":input[id$='" + field + "Date']");
  var objHours = $(":input[id$='" + field + "DateHours']");
  var objMinutes = $(":input[id$='" + field + "DateMinutes']");
  //split stringa data con separatori / o -
  var re = /\/|\-/; ;
  var datePart = objDate.val().split(re);

  //parse data
  var dDay = 1;
  var dMonth = 1;
  var dYear = 1;
  if (eng == true) {
    // date looks like MM/dd/yyyy 
    dDay = datePart[1];
    dMonth = datePart[0];
  } else {
    // date looks like dd/MM/yyyy 
    dDay = datePart[0];
    dMonth = datePart[1];
  }
  var dYear = datePart[2];
  
  var dHours = 0;
  var dMinutes = 0;
  if(objHours.length > 0) {
	//se ho anche l'ora procedo
	dHours = objHours.val().substring(0, 2);
	dMinutes = objMinutes.val();
  }
  
  var rDate = new Date(dYear, dMonth - 1, dDay, dHours, dMinutes, 0);
  return rDate;
}
che va richiamata, per le date italiane nel formato dd/MM/yyyy, come ad esempio 21/12/2012:

JavaScript

var dtBegin = sgartGetSPDateFieldValue("dtcBegin");
alert(dtBegin);
per le date in inglese nel formato MM-dd-yyyy come ad esempio 12-21-2012:

JavaScript

var dtBegin = sgartGetSPDateFieldValue("dtcBegin",true);
alert(dtBegin);

Nel caso servisse una data nel formato ISO yyyy-MM-ddTHH:mm:ssZ, si può usare questa funzione sgartFormatDateToISO:

JavaScript

//format date to yyyy-MM-ddTHH:mm:ssZ
function sgartFormatDateToISO(dt) {
  // return dt.toISOString(); //non supportata da tutti i browser
  var dYear = dt.getUTCFullYear();
  var dMonth = formatNumberTo2Digit(dt.getUTCMonth() + 1);
  var dDay = formatNumberTo2Digit(dt.getUTCDate());
  var dHours = formatNumberTo2Digit(dt.getUTCHours());
  var dMinutes = formatNumberTo2Digit(dt.getUTCMinutes());
  var dSeconds = formatNumberTo2Digit(dt.getUTCSeconds());

  return dYear + "-" + dMonth + "-" + dDay + "T" + dHours + ":" + dMinutes + ":" + dSeconds + "Z";
}

function formatNumberTo2Digit(n) {
  return  n > 9 ? n : "0" + n;
}
Il formato ISO è utile perchè è indipendente dalla lingua e può essere parsato da tutti i sistemi in modo inequivocabile.
Va richiamata come:

JavaScript

var dtBegin = new Date();
alert(sgartFormatDateToISO(dtBegin));  
Tags:
JavaScript184 SharePoint497 SharePoint 2010224
Potrebbe interessarti anche: