<p>पल ()। अब से () 'अमान्य तिथि' लौटाता है</p>

को निर्मित 7 अक्तू॰ 2018  ·  10टिप्पणियाँ  ·  स्रोत: moment/moment

जारी करने के लिए समस्या और कदम का विवरण:
मैं एक उपयोगकर्ता के खाते की आयु प्राप्त करने के लिए पल का उपयोग कर रहा हूं:
moment(user account created date here).fromNow() लेकिन यह 'अमान्य दिनांक' लौटाता है। यह पहले काम करता था लेकिन अब यह काम नहीं करता है। बनाई गई तारीख कुछ इस तरह दिखती है: 2018-06-07T22:54:07.310Z
moment(date here).format() का उपयोग करना ठीक काम करता है।
कृपया उपयोग किए गए सभी चर के मान शामिल करें।
मैं जिस दिनांक से प्रारूप का उपयोग करता हूं और उपयोग नहीं करता है वह 2018-06-07T22:54:07.310Z
वातावरण:
बॉट को त्याग दें
उदाहरण: OSX पर Chrome 49, विंडोज 7 पर इंटरनेट एक्सप्लोरर 10, उबंटू 16.0.4 पर Node.JS 4.4.4
मैं ऊपर सूचीबद्ध किसी भी चीज़ के लिए क्षण का उपयोग नहीं करता।
ब्राउज़र और ओएस दोनों हमारे लिए महत्वपूर्ण हैं, खासकर यदि आपके पास एक आईओटी एप्लिकेशन जैसा एक असुरक्षित वातावरण है।

अन्य जानकारी जो सहायक हो सकती है: https://i.imgur.com/4LFsZh3.png

  • जिस मशीन पर कोड चल रहा है, उसका समय क्षेत्र सेटिंग: PST
  • जिस समय और जिस समय कोड चलाया गया था: 12:20 PM, 10/7/18
  • उपयोग में अन्य पुस्तकालय (टाइपस्क्रिप्ट, इम्यूटेबल.जेएस, आदि) कोई नहीं

यदि आप किसी समस्या की रिपोर्ट कर रहे हैं, तो कृपया अपने द्वारा उपयोग किए जा रहे परिवेश में निम्न कोड चलाएँ और आउटपुट शामिल करें:

console.log( (new Date()).toString())
console.log((new Date()).toLocaleString())
console.log( (new Date()).getTimezoneOffset())
console.log( navigator.userAgent)
console.log(moment.version)

सूर्य अक्टूबर 07 2018 12:29:05 GMT-0700 (प्रशांत डेलाइट समय)
2018-10-7 12:29:05
420
2.22.2
सुनिश्चित करें कि आपका मुद्दा क्षण भर के लिए अलग हो गया है।

सबसे उपयोगी टिप्पणी

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

नई तिथि ()) .String () गुरु जनवरी 17 2019 06:53:11 GMT-0600 (केंद्रीय मानक समय)
new Date ()) .LocaleString (): 1/17/2019, 6:53:11 पूर्वाह्न
नई तिथि ())। getTimezoneOffset (): 360
पल.वजन: 2.23.0
NodeJS v11.6.0 है

मैं कुछ परीक्षण कर रहा हूं और संघर्ष एक Object.prototype कंस्ट्रक्टर है।

Object.prototype.test = function () {
    return test
}

const moment = require('moment');

const time = moment('2017-08-08T18:29:07.000Z')
console.log(time.isValid()) // true
console.log(time.toNow()) // Invalid date
console.log(time.fromNow()) // Invalid date

सभी 10 टिप्पणियाँ

आप अपने डिस्कोर्ड बॉट को कैसे चलाते हैं?

आपने कहा: _ "इससे पहले काम किया था लेकिन अब यह काम नहीं करता है" _
काम करने के बाद से कुछ भी बदल गया है - जैसे कि आपने अपने कलह पर चलने वाले पर्यावरण को अपडेट किया है? क्या 'उपयोगकर्ता खाता निर्मित तिथि' का प्रारूप बदल गया है?

क्या आप नीचे दिए गए आउटपुट (विशेष रूप से हार्ड-कोडिंग स्ट्रिंग्स का उपयोग करके) को दिखाने के लिए अपने कलंक वाले बॉट कोड को संशोधित करने में सक्षम हैं:

console.log('moment.format:', moment("2018-06-07T22:54:07.310Z").format());
console.log('moment.fromNow:', moment("2018-06-07T22:54:07.310Z").fromNow());

यह पहले काम कर रहा था फिर बस रुक गई। कोई कोड नहीं बदला गया। बॉट के साथ कोई ऊर्जावान नहीं बदला। जिस तरह से तारीखों को पार्स किया जा रहा है, वही लगता है।

और यहाँ कंसोल आउटपुट क्या है;

moment.format: 2018-06-07T15:54:07-07:00
moment.fromNow: Invalid date

और यहां बताया गया है कि मैंने इसका उपयोग कैसे किया ( this.client.moment यह है कि मेरे पास कैसे परिभाषित किया गया है):

 console.log('moment.format:', this.client.moment("2018-06-07T22:54:07.310Z").format());
console.log('moment.fromNow:', this.client.moment("2018-06-07T22:54:07.310Z").fromNow());

निश्चित नहीं है कि मैंने इसका उल्लेख किया है या नहीं, लेकिन यहां वर्तमान संस्करण हैं जिनका मैं उपयोग कर रहा हूं:
"पल": "^ 2.22.2",
"पल-अवधि-प्रारूप": "^ 2.2.2"
और मैं नोड के v8.9.2 पर हूं

मुझे एंगुलर 6 (आयनिक आधारित ऐप) और पल 2.22.2 के साथ इसी तरह की समस्या हो रही है, क्योंकि इसके लिए कुछ सरल के लिए अमान्य दिनांक देता है।
moment(new Date()).fromNow();
कृपया सलाह दें।

२.२३.० में अभी भी हो रहा है

time = moment('2017-08-08T18:29:07.000Z')
time.isValid() // true
time.toNow() // Invalid date
time.fromNow() // Invalid date

इस अनुरोध को खोलने के लिए धन्यवाद
नमस्ते! इस मुद्दे को दर्ज करने के लिए धन्यवाद! दुर्भाग्य से, मैं इसे पुन: पेश नहीं कर सकता। क्या आप कोई अन्य जानकारी प्रदान कर सकते हैं?

यदि आप इन मशीनों को अपनी मशीनों पर चलाते हैं तो यह मदद करता है:

console.log( (new Date()).toString())
console.log((new Date()).toLocaleString())
console.log( (new Date()).getTimezoneOffset())
console.log( navigator.userAgent)
console.log(moment.version)

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

नई तिथि ()) .String () गुरु जनवरी 17 2019 06:53:11 GMT-0600 (केंद्रीय मानक समय)
new Date ()) .LocaleString (): 1/17/2019, 6:53:11 पूर्वाह्न
नई तिथि ())। getTimezoneOffset (): 360
पल.वजन: 2.23.0
NodeJS v11.6.0 है

मैं कुछ परीक्षण कर रहा हूं और संघर्ष एक Object.prototype कंस्ट्रक्टर है।

Object.prototype.test = function () {
    return test
}

const moment = require('moment');

const time = moment('2017-08-08T18:29:07.000Z')
console.log(time.isValid()) // true
console.log(time.toNow()) // Invalid date
console.log(time.fromNow()) // Invalid date

मैं भी इससे प्रभावित हूं।
सबसे पहले, मेरा मानना ​​था कि कंस्ट्रक्टर में एक अधूरा यूनिक्स टाइमस्टैम्प (डेटा मुझे कैसे उपलब्ध कराया गया) का उपयोग करने का कारण था, लेकिन मोमेंटजेएस के प्रलेखन में उदाहरण कोड का परीक्षण करने पर, मैंने पाया कि fromNow() लिए कोई भी कॉल Invalid Date लौटा।

यहां भी यही समस्या।

toString Tue Jan 07 2020 10:20:09 GMT+0100 (Central European Standard Time)
toLocaleString 1/7/2020, 10:20:09 AM
getTimezoneOffset -60
navigator.userAgent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0
moment.version 2.24.0

यहाँ "moment": "^2.24.0", पर समान है। यह ब्राउज़र पर चलने पर ठीक काम करता है लेकिन नोडज में विफल रहता है। तय होने तक कोई वर्कअराउंड? @marwahaha

यह एक हैक है, लेकिन आप Object.prototype एक्सटेंशन बदल सकते हैं ताकि वे असंख्य न हों:

console.log(moment().fromNow()); // 'a few seconds ago'
Object.prototype.randomExtension = true;
console.log(moment().fromNow()); // 'Invalid date'

Object.keys(Object.prototype).forEach(function(extension) {
  Object.defineProperty(Object.prototype, extension, { enumerable: false });
});

console.log(moment().fromNow()); // 'a few seconds ago'
क्या यह पृष्ठ उपयोगी था?
0 / 5 - 0 रेटिंग्स