2012-08-15 12 views
5

मैं दिनांक और समय डेटा प्राप्त करने के लिए इस jQuery datetimepicker को आजमाने का प्रयास कर रहा हूं। मैं ज्यादातर चीज़ों को प्राप्त करने में सक्षम हूं (प्रारूप, प्रदर्शन, आदि)। हालांकि, मैं यूटीसी प्रारूप में दिनांक और समय प्राप्त करने में सक्षम नहीं था। मैं केवल स्थानीय प्रारूप में दिनांक और समय प्राप्त करने में सक्षम हूं।jQuery datetimepicker में यूटीसी समय कैसे प्राप्त करें

क्या कोई यह जानता है कि तिथि और समय प्राप्त करने के लिए इसे कैसे संशोधित किया जाए? या पॉपअप में "अभी" बटन हटा दें?

उत्तर

1

आप इस कोशिश कर सकते हैं:

लाइव डेमो:http://jsfiddle.net/Dgnjn/5/

$('#timePicker').datetimepicker({ 
    dateFormat: 'dd-mm-yy', 
    timeFormat: 'hh:mm:ss', 
    stepHour: 2, 
    stepMinute: 10, 
    onSelect: function(dateText, inst) { 
    var dateAsString = dateText; 
    var dateAsObject = $(this).datepicker('getDate'); 
    dateAsObject = $.datepicker.formatDate('mm-dd-yy', new Date(dateAsObject)) 
     alert(dateAsObject); 
    } 
}); 
+1

उत्तर के लिए धन्यवाद लेकिन कोड केवल हमें बताता है कि आउटपुट को प्रारूपित करने के लिए कैसे। यह नहीं बताता कि समय के प्रारूप को स्थानीय समय से यूटीसी समय में कैसे बदला जाए। – user1599647

4

मैं आज ही समस्या में भाग है, और इस वर्ष धागा मिल गया। जब आप "अभी" बटन पर क्लिक करते हैं तो आप यूटीसी समय का उपयोग करने के लिए $ .datepicker._gotoToday को ओवरराइड कर सकते हैं।

//make the now button go to "now" in utc, not local 
$.datepicker._gotoToday = function(id) { 
    var inst = this._getInst($(id)[0]), 
     $dp = inst.dpDiv; 
    this._base_gotoToday(id); 
    var tp_inst = this._get(inst, 'timepicker'); 
    //removed -> selectLocalTimeZone(tp_inst); 
    var now = new Date(); 
    var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 
    this._setTime(inst, now_utc); 
    $('.ui-datepicker-today', $dp).click(); 
}; 
+0

यह केवल यूटीसी को समय निर्धारित करता है, तारीख स्थानीय रहती है। तो यदि आपका लोकेल महीने के पहले दिन है और यूटीसी दूसरे पर है तो 'अब' बटन अभी भी अपनी तारीख के रूप में 1 का उपयोग करेगा। – Simon

0

किसी भी अतिरिक्त libs के बिना आप निम्न करने के लिए नीचे दिए गए उपयोगिता तरीकों का उपयोग कर सकते हैं:

:

var dateFromPicker = getDateFromPicker(); 
var dateUtc = localAsUtc(dateFromPicker); 
var iso = dateUtc.toISOString(); // returns "2016-12-06T00:00:00.000Z" 
/** 
* <b>WARNING</b>: This method should only be used in conjunction with components that handle local dates (i.e. date pickers). 
* 
* Returns a local date constructed from a UTC date (shifts the time by the local time zone). E.g.: 
* <ul><li>2016-01-01T00:00Z (UTC) -> 2016-01-01T00:00-0100 (CVT) 
*  <li>2016-01-01T00:00Z (UTC) -> 2016-01-01T00:00+0100 (CET) 
* </ul> 
* @param date a date in UTC time zone 
* @returns {Date} the same date & time in the local time zone 
*/ 
function utcAsLocal(date) { 
    if (isNotValidDate(date)) { 
     return null; 
    } 

    return new Date(
     date.getUTCFullYear(), 
     date.getUTCMonth(), 
     date.getUTCDate(), 
     date.getUTCHours(), 
     date.getUTCMinutes(), 
     date.getUTCSeconds(), 
     date.getUTCMilliseconds() 
    ); 
} 

/** 
* <b>WARNING</b>: This method should only be used in conjunction with components that handle local dates (i.e. date pickers). 
* 
* Returns a UTC date constructed from a local date (shifts the time by the local time zone). E.g.: 
* <ul><li>2016-01-01T00:00-0100 (CVT) -> 2016-01-01T00:00Z (UTC) 
*  <li>2016-01-01T00:00+0100 (GMT) -> 2016-01-01T00:00Z (UTC) 
* </ul> 
* @param date a date in UTC time zone 
* @returns {Date} the same date & time in the UTC time zone 
*/ 
function localAsUtc(date) { 
    if (isNotValidDate(date)) { 
     return null; 
    } 

    return new Date(Date.UTC(
     date.getFullYear(), 
     date.getMonth(), 
     date.getDate(), 
     date.getHours(), 
     date.getMinutes(), 
     date.getSeconds(), 
     date.getMilliseconds() 
    )); 
} 

function isValidDate (date) { 
    return !isNotValidDate(date); 
} 

function isNotValidDate(date) { 
    return date == null || isNaN(date.getTime()); 
} 

यहाँ कुछ उदाहरण जो पहले और यूटीसी के बाद समय क्षेत्रों अनुकरण कर रहे हैं

var date; 
 

 
// simulate a datepicker in (CET) 
 
date = new Date("2016-12-06T00:00:00.000+0100"); 
 
date.toISOString(); // "2016-12-05T23:00:00.000Z" 
 
date = localAsUtc(date); 
 
date.toISOString(); // "2016-12-06T00:00:00.000Z" sent to server 
 

 
// simulate a datepicker in (CVT) 
 
date = new Date("2016-12-06T00:00:00.000-0100"); 
 
date.toISOString(); // "2016-12-06T01:00:00.000Z" 
 
date = localAsUtc(date); 
 
date.toISOString(); // "2016-12-06T00:00:00.000Z" sent to server 
 

 
// setting the datepicker date (CET) 
 
date = new Date("2016-12-06T00:00:00.000Z"); // received from server 
 
date.toISOString(); // "2016-12-06T00:00:00.000Z" 
 
date = utcAsLocal(date); // set datepicker with this date shows (06/12/2016) 
 
date.toISOString(); // "2016-12-05T23:00:00.000Z" 
 

 
// setting the datepicker date (CVT) 
 
date = new Date("2016-12-06T00:00:00.000Z"); // received from server 
 
date.toISOString(); // "2016-12-06T00:00:00.000Z" 
 
date = utcAsLocal(date); // set datepicker with this date shows (06/12/2016) 
 
date.toISOString(); // "2016-12-06T01:00:00.000Z"

लेकिन उत्तर moment.js का उल्लेख किए बिना पूरा नहीं होगा जो हैंडलिंग को बहुत आसान बनाता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^