2011-03-31 19 views
24

कल की तारीख और साथ ही साथ मेरे टेक्स्टबॉक्स में कल की तारीख को कैसे दिखाया जाए, आज की तारीख में?कल की तारीख और आज की तारीख दिखाने के लिए जावास्क्रिप्ट कोड

मेरे पास यह home.php है जहां मैं कल दिनांक दिखाता हूं (उपयोगकर्ता इस पाठ को संशोधित नहीं कर सकता) और आज की तारीख (उपयोगकर्ता को आज तारीख को इनपुट करना होगा)। और जब कल आता है और उपयोगकर्ता घर जाता है। Php s/वह कल दिनांकित तारीख को देखेगा, और फिर रोम के लिए तारीख को इनपुट करेगा।

ईजी: Day1 (मार्च 30, 2011) कल की तारीख: 29 मार्च, 2011 (नहीं संपादन योग्य पाठ बॉक्स) आज दिनांक दर्ज करें: (मैं टाइप करता हूँ ..) 30 मार्च, 2011

दिवस 2 (मार्च 31, 2011) कल की तारीख: 30 मार्च, 2011. (संपादन योग्य टेक्स्टबॉक्स नहीं) स्वचालित रूप से, यह home.php पर क्लिक करने पर दिखाई देगा आज दिनांक दर्ज करें: (मैं टाइप करूंगा ..) 31 मार्च, 2011।

और इतने पर ..

मैं एक मान्यता है कि अभ्यस्त गलत दिनांक स्वरूप को स्वीकार जरूरत और प्रारूप होना चाहिए: 01-मार्च -11 यह कैसे करें? । :(

+0

यदि उपयोगकर्ता केवल आज की तारीख में प्रवेश कर सकता है, तो यह संपादन योग्य क्यों है ?? आप इसे अपने आप क्यों नहीं रखते ?? –

+0

हाय फरगन, मुझे आज की तारीख में प्रवेश करने की कोई जांच नहीं है। मेरी जांच यह है कि मुझे कल की तारीख नहीं मिल सकती है। :( – catsgirl008

उत्तर

83

कल की तारीख बस आज की तारीख में कम से एक है, इसलिए है:

var d = new Date(); 
d.setDate(d.getDate() - 1); 

आज है 1 अप्रैल, तो यह 0 अप्रैल जो मार्च 31 में बदल जाती है पर सेट है

आप के बाद से कुछ अन्य सामान करना चाहता था, यहाँ कुछ कार्यों यह करने के लिए कर रहे हैं:

// Check if d is a valid date 
// Must be format year-month name-date 
// e.g. 2011-MAR-12 or 2011-March-6 
// Capitalisation is not important 
function validDate(d) { 
    var bits = d.split('-'); 
    var t = stringToDate(d); 
    return t.getFullYear() == bits[0] && 
     t.getDate() == bits[2]; 
} 

// Convert string in format above to a date object 
function stringToDate(s) { 
    var bits = s.split('-'); 
    var monthNum = monthNameToNumber(bits[1]); 
    return new Date(bits[0], monthNum, bits[2]); 
} 

// Convert month names like mar or march to 
// number, capitalisation not important 
// Month number is calendar month - 1. 
var monthNameToNumber = (function() { 
    var monthNames = (
    'jan feb mar apr may jun jul aug sep oct nov dec ' + 
    'january february march april may june july august ' + 
    'september october november december' 
    ).split(' '); 

    return function(month) { 
    var i = monthNames.length; 
    month = month.toLowerCase(); 

    while (i--) { 
     if (monthNames[i] == month) { 
     return i % 12; 
     } 
    } 
    } 
}()); 

// Given a date in above format, return 
// previous day as a date object 
function getYesterday(d) { 
    d = stringToDate(d); 
    d.setDate(d.getDate() - 1) 
    return d; 
} 

// Given a date object, format 
// per format above 
var formatDate = (function() { 
    var months = 'jan feb mar apr may jun jul aug sep oct nov dec'.split(' '); 
    function addZ(n) { 
    return n<10? '0'+n : ''+n; 
    } 
    return function(d) { 
    return d.getFullYear() + '-' + 
      months[d.getMonth()] + '-' + 
      addZ(d.getDate()); 
    } 
}()); 

function doStuff(d) { 

    // Is it format year-month-date? 
    if (!validDate(d)) { 
    alert(d + ' is not a valid date'); 
    return; 
    } else { 
    alert(d + ' is a valid date'); 
    } 
    alert(
    'Date in was: ' + d + 
    '\nDay before: ' + formatDate(getYesterday(d)) 
); 
} 


doStuff('2011-feb-08'); 
// Shows 2011-feb-08 is a valid date 
//  Date in was: 2011-feb-08 
//  Day before: 2011-feb-07 
+0

धन्यवाद रॉब! :) – catsgirl008

+0

उत्कृष्ट ... धन्यवाद। –

11

एक लाइनर:

var yesterday = new Date(Date.now() - 864e5); // 864e5 == 86400000 == 24*60*60*1000 
+1

प्रत्येक बार गणना '24 * 60 * 60 * 1000' करने के बजाय' 8640000' का उपयोग करने लायक हो सकता है। –

+1

यह '86400000' –

+0

@danielcorin होना चाहिए आप सही हैं। मैं बस जवाब स्पष्ट होना चाहता था। मैं जवाब अपडेट करूंगा। '24 * 60 * 60 * 1000 ==> 86400000 ==> 864e5' – oriadam

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