Moment.js में पदावनति चेतावनी - किसी मान्यताप्राप्त आईएसओ प्रारूप में नहीं


176

मुझे एक चेतावनी मिल रही है कि एक पल के लिए प्रदान किया गया मान किसी मान्यता प्राप्त आईएसओ प्रारूप में नहीं है। मैंने अपने चर को आज पल फ़ंक्शन के साथ बदल दिया और अभी भी यह काम नहीं करता है।

यहाँ चेतावनी त्रुटि है:

पदावनति चेतावनी: प्रदान किया गया मान किसी मान्यताप्राप्त आईएसओ प्रारूप में नहीं है। पल निर्माण वापस js दिनांक () के लिए आता है, जो सभी ब्राउज़रों और संस्करणों में विश्वसनीय नहीं है। गैर आईएसओ तिथि प्रारूप हतोत्साहित किया जाता है और आगामी प्रमुख रिलीज में हटा दिया जाएगा। कृपया अधिक जानकारी के लिए http://momentjs.com/guides/#/warnings/js-date/ देखें । तर्क: [0] _isamomentObject: true, _isUTC: true, _useUTC: true, _l: undefined, _i: 2016-9-26 19:30, _f: अपरिभाषित, _strict: अपरिभाषित, _locale: [ऑब्जेक्ट ऑब्जेक्ट]

var entryDate = new Date();
var currentDate = entryDate.getDate();

function between(x, min, max) {
  return x.valueOf() >= min.valueOf() && x < max.valueOf();
}

$('#custom1').change(function () {
  if ($('#custom1 :selected').val() == 'AU') {
    var keyword = '';

    var aus1_s = moment.tz('2016-9-26 19:30', 'Australia/Sydney');
    var aus2_s = moment.tz('2016-10-2 19:30', 'Australia/Sydney');
    var aus3_s = moment.tz('2016-10-9 19:30', 'Australia/Sydney');
    var aus4_s = moment.tz('2016-10-16 19:30', 'Australia/Sydney');
    var aus5_s = moment.tz('2016-10-23 19:30', 'Australia/Sydney');
    var aus6_s = moment.tz('2016-10-30 19:30', 'Australia/Sydney');
    var aus6_e = moment.tz('2016-11-5 19:30', 'Australia/Sydney');
  } else if ($('#custom1 :selected').val() == 'NZ') {
    var aus1_s = moment.tz('2016-9-28 20:30', 'Pacific/Auckland');
    var aus2_s = moment.tz('2016-10-4 20:30', 'Pacific/Auckland');
    var aus3_s = moment.tz('2016-10-11 20:30', 'Pacific/Auckland');
    var aus4_s = moment.tz('2016-10-18 20:30', 'Pacific/Auckland');
    var aus5_s = moment.tz('2016-10-25 20:30', 'Pacific/Auckland');
    var aus6_s = moment.tz('2016-11-2 20:30', 'Pacific/Auckland');
    var aus6_e = moment.tz('2016-11-9 20:30', 'Pacific/Auckland');
  } else {
    $('#entryEquals').val('');
    return false;
  }

  var today = moment();

  switch (true) {
    case between(today, aus1_s, aus2_s):
      keyword = 'RElYT04=';
      break;

    case between(today, aus2_s, aus3_s):
      keyword = 'QlJJREU=';
      break;

    case between(today, aus3_s, aus4_s):
      keyword = 'U1lETkVZ';
      break;

    case between(today, aus4_s, aus5_s):
      keyword = 'R1JPT00=';
      break;

    case between(today, aus5_s, aus6_s):
      keyword = 'V0VERElORw==';
      break;

    case between(today, aus6_s, aus6_e):
      keyword = 'VExD';
      break;

    default:
      $('#entryEquals').val('');
      break;
  }

  $('#entryEquals').val(keyword);
});

1
मुझे लगता है कि चेतावनी को संदर्भित करता है '2016-9-26 19:30'और इस तरह मान्यता प्राप्त आईएसओ प्रारूप नहीं है
जैरोमंडा एक्स

प्रारूप पर त्रुटि क्या है? तो क्या मुझे 0 जोड़ने की आवश्यकता है?
जेमई

1
आप प्रलेखन केmoment.tz('2016-9-28 20:30', 'YYYY-M-D H:mm', 'Pacific/Auckland'); अनुसार कर सकते हैं ... यह 1 या 2 अंकों के महीनों और दिनों, 24 घंटे के प्रारूप में 1 या 2 अंकों के घंटे
Jaromanda X

2
त्रुटि यह है कि आप जिस प्रारूप की आपूर्ति कर रहे हैं, वह एक मान्यता प्राप्त आईएसओ प्रारूप नहीं है ... या तो एक मान्यता प्राप्त आईएसओ प्रारूप प्रदान करें, या एक स्ट्रिंग प्रदान करें जो अपेक्षित प्रारूप पर "संकेत" देता है
जैरोमांडा एक्स

ठीक है धन्यवाद इस बारे में कि मैं इस प्रारूप को कैसे जोड़ सकता हूं? var Today = moment.tz (आज के दिन, $। urlParam ('t_zone'));
जेमई

जवाबों:


180

उनके सभी भयानक दस्तावेज देखें!

यहाँ वे चेतावनी संदेश पर चर्चा करते हैं ।

स्ट्रिंग + प्रारूप

चेतावनी: तार को पार्स करने के लिए ब्राउज़र समर्थन असंगत है। क्योंकि कोई विनिर्देश नहीं है कि किन स्वरूपों का समर्थन किया जाना चाहिए, कुछ ब्राउज़रों में क्या काम करता है अन्य ब्राउज़रों में काम नहीं करेगा।

आईएसओ 8601 स्ट्रिंग्स के अलावा किसी भी चीज़ को पार्स करने के लगातार परिणामों के लिए, आपको स्ट्रिंग + फॉर्मेट का उपयोग करना चाहिए ।

moment("12-25-1995", "MM-DD-YYYY");

स्ट्रिंग + प्रारूप (कई प्रारूप)

यदि आपके पास एक से अधिक प्रारूप हैं, तो उनके स्ट्रिंग + प्रारूप देखें (एक 's' के साथ)।

यदि आप एक इनपुट स्ट्रिंग के सटीक प्रारूप को नहीं जानते हैं, लेकिन यह जानते हैं कि यह कई में से एक हो सकता है, तो आप स्वरूपों की एक सरणी का उपयोग कर सकते हैं।

moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);

कृपया कुछ और विशिष्ट के लिए प्रलेखन की जांच करें।

समय क्षेत्र

ज़ोन में चेकआउट पार्सिंग , टाइमज़ोन के लिए समान दस्तावेज।

क्षण निर्माणकर्ता क्षण के रूप में सभी तर्कों को लेता है, लेकिन अंतिम तर्क को समय क्षेत्र पहचानकर्ता के रूप में उपयोग करता है।

var b = moment.tz("May 12th 2014 8PM", "MMM Do YYYY hA", "America/Toronto");

संपादित करें

//...
var dateFormat = "YYYY-M-D H:m"; //<-------- This part will get rid of the warning.
var aus1_s, aus2_s, aus3_s, aus4_s, aus5_s, aus6_s, aus6_e;
if ($("#custom1 :selected").val() == "AU" ) {
    var region = 'Australia/Sydney';

    aus1_s = moment.tz('2016-9-26 19:30', dateFormat, region);              
    aus2_s = moment.tz('2016-10-2 19:30', dateFormat, region);              
    aus3_s = moment.tz('2016-10-9 19:30', dateFormat, region);                  
    aus4_s = moment.tz('2016-10-16 19:30', dateFormat, region);                 
    aus5_s = moment.tz('2016-10-23 19:30', dateFormat, region);
    aus6_s = moment.tz('2016-10-30 19:30', dateFormat, region);
    aus6_e = moment.tz('2016-11-5 19:30', dateFormat, region);
} else if ($("#custom1 :selected").val() == "NZ" ) {
    var region = 'Pacific/Auckland';

    aus1_s =  moment.tz('2016-9-28 20:30', dateFormat, region);
    aus2_s =  moment.tz('2016-10-4 20:30', dateFormat, region);
    aus3_s =  moment.tz('2016-10-11 20:30', dateFormat, region);
    aus4_s =  moment.tz('2016-10-18 20:30', dateFormat, region);
    aus5_s =  moment.tz('2016-10-25 20:30', dateFormat, region);
    aus6_s =  moment.tz('2016-11-2 20:30', dateFormat, region);
    aus6_e =  moment.tz('2016-11-9 20:30', dateFormat, region);
}
//...

89
दस्तावेज़ीकरण की प्रतिलिपि बनाने और चिपकाने के बजाय, कृपया वास्तविक उत्तर प्रदान करें।
रीब्स

2
इसने मुझे "इनपुट" - क्षण ("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]] प्रारूप डालने में मदद की;
21

2
@ मुझे लगता है कि मैंने बहुत सारे दस्तावेज़ जोड़े क्योंकि सामान्य समाधान सीधे आगे नहीं है। जाहिर है जेमई के लिए विशिष्ट समाधान उत्तर में होना चाहिए था और मैंने इसे तब से जोड़ा है (आपके लिए धन्यवाद!), लेकिन पूर्व में यहां बहुत सारे दस्तावेज हैं।
18o में क्रिस्चो8989

धन्यवाद, लेकिन क्या होगा यदि आप इस भारी प्रारूपण के बिना एक साधारण तारीख चाहते हैं, तो हम इस चेतावनी को अनदेखा कर सकते हैं?
वेबमन जूल

इससे मुझे मदद मिली -> क्षण ("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]];
सीजर रोड्रिगेज टी

50

मेरे लिए यह काम करना:

moment(new Date("27/04/2016")).format

5
यह सांत्वना प्रदूषण से बचने के लिए सबसे सरल काम है
जोशी

2
मैं किसी को भी किसी भी डिग्री के लिए IE समर्थन से निपटने के लिए है कि इस दृष्टिकोण की सलाह नहीं होगा। विशेष रूप से IE 11.
Ajm113

1
यह सबसे सरल और सटीक उत्तर है। धन्यवाद इससे मुझे मदद मिली।
ताहिर अफरीदी

15

मैं इस त्रुटि में भाग गया क्योंकि मैं एक तारीख से पारित करने की कोशिश कर रहा था localStorage। दिनांक को एक नई Dateवस्तु में पास करना, और फिर कॉल करना .toISOString () ने मेरे लिए चाल :

const dateFromStorage = localStorage.getItem('someDate');
const date = new Date(dateFromStorage);
const momentDate = moment(date.toISOString());

इसने कंसोल में किसी भी चेतावनी को दबा दिया।


यह चेतावनी को दबा देगा लेकिन नकारात्मक पक्ष यह है कि यदि आप टाइमज़ोन के लिए विशिष्ट हैं, तो मैं यह सुझाव नहीं दूंगा: क्योंकि यह दी गई तारीख को यूटीसी में बदल देगा क्योंकि हम '.toISOString ()' कह रहे हैं। "पल (नई तिथि (27/04/2016")) की कोशिश करें। प्रारूप "जैसा कि अन्य उत्तर से कहा गया है - जो स्थानीय समय को ध्यान में रखेगा ..
whoami

15

इस तरह से अपने कार्य में पल का उपयोग करें

 moment(new Date(date)).format('MM/DD/YYYY')

यह वह छोटा सा उत्तर है जिसकी आप तलाश कर रहे हैं यदि आप केवल "ह्रास की चेतावनी" से छुटकारा चाहते हैं
विक्टरक

6

यह जवाब इस चेतावनी की बेहतर समझ देना है

जब आप समय ऑब्जेक्ट बनाने के लिए क्षण का उपयोग करते हैं, तो डिप्रेशन की चेतावनी होती है var today = moment();

अगर यह चेतावनी आपके साथ ठीक है तो मेरे पास एक सरल तरीका है।

इसके बजाय उपयोग dateसे वस्तु का उपयोग न करें । उदाहरण के लिए उपयोग करेंjsmomentmoment() वर्तमान तिथि प्राप्त करने करें।

या jsदिनांक ऑब्जेक्ट को momentदिनांक में परिवर्तित करें । आप बस अपने स्वरूप को निर्दिष्ट कर सकते हैंjs तिथि ऑब्जेक्ट ।

अर्थात, moment("js date", "js date format");

उदाहरण के लिए:

moment("2014 04 25", "YYYY MM DD");

(लेकिन आप केवल इस यूनिकिल आईटी को ही इस्तेमाल कर सकते हैं, यह momentभविष्य से ह्रास हो सकता है )


6
गंभीरता से! इस पदावनति चेतावनी को दूर करने के बारे में प्रश्न! यह पूछने के लिए कि इस अपक्षय का उपयोग कैसे किया जाए! यह भी है, "यह भविष्य में हटा दिया जाएगा" नहीं "यह भविष्य में पल से मूल्यह्रास हो सकता है" यह पहले से ही पदावनत है!
अल-मोताफ़र

@ अल-मोताफ़र, मुझे एक छोटी सी शंका है, जब ifहालत फेल हो गए तो आप क्यों आगे निकल गए । आपको जवाब आगे नहीं बढ़ना चाहिए।
सहिथ्यान विघ्नेश्वरन १ah ’१ V

2
धन्यवाद, यह वह उत्तर है जिसने वास्तव में मुझे दिखाया कि मैं यहां क्या जान सकता हूं।
DigitalDesignDj

3

आप उपयोग कर सकते हैं

moment(date,"currentFormat").format("requiredFormat");

इसका उपयोग तब किया जाना चाहिए जब तारीख आईएसओ प्रारूप न हो क्योंकि यह यह बताएगा कि हमारा वर्तमान प्रारूप क्या है।


1
हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन यह समस्या का हल कैसे और / या इसके बारे में अतिरिक्त संदर्भ प्रदान करता है, इससे उत्तर के दीर्घकालिक मूल्य में सुधार होगा।
लियोपल

@ गोपाल ने किए कुछ बदलाव!
बीईएसटी 30

2

पल के साथ पार्सिंग स्ट्रिंग ।js।

const date = '1231231231231' //Example String date
const parsed = moment(+date);

जब मैं सप्ताह का अंक प्राप्त करने के लिए यूनिक्स प्रारूप का उपयोग करने की कोशिश कर रहा था, तो मुझे डेप्रिसिएशन चेतावनी से छुटकारा पाने में मदद मिली।
curious.netter
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.