<p>moment (). fromNow () mengembalikan 'Tanggal tidak valid'</p>

Dibuat pada 7 Okt 2018  ·  10Komentar  ·  Sumber: moment/moment

Deskripsi Masalah dan Langkah untuk Mereproduksi:
Saya menggunakan momen untuk mengetahui usia akun pengguna, dengan menggunakan:
moment(user account created date here).fromNow() tetapi mengembalikan 'Tanggal tidak valid'. Ini bekerja sebelumnya tetapi tidak lagi berfungsi. Tanggal pembuatan terlihat seperti ini: 2018-06-07T22:54:07.310Z .
Menggunakan moment(date here).format() berfungsi dengan baik.
Harap sertakan nilai dari semua variabel yang digunakan.
Tanggal yang saya gunakan untuk memformat dan menggunakan fromNow adalah 2018-06-07T22:54:07.310Z
Lingkungan Hidup:
Bot Perselisihan
Contoh: Chrome 49 di OSX, Internet Explorer 10 di Windows 7, Node.JS 4.4.4 di Ubuntu 16.0.4
Saya tidak menggunakan momen untuk apa pun yang tercantum di atas.
Baik browser dan OS penting bagi kami, terutama jika Anda memiliki lingkungan yang tidak biasa seperti aplikasi IOT.

Informasi lain yang mungkin berguna: https://i.imgur.com/4LFsZh3.png

  • Pengaturan zona waktu mesin tempat kode dijalankan: PST
  • Waktu dan tanggal dijalankannya kode: 12:20, 10/7/18
  • Pustaka lain yang digunakan (TypeScript, Immutable.js, dll) Tidak ada

Jika Anda melaporkan masalah, jalankan kode berikut di lingkungan yang Anda gunakan dan sertakan hasilnya:

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

Minggu 07 Okt 2018 12:29:05 GMT-0700 (Waktu Musim Panas Pasifik)
2018-10-7 12:29:05
420
2.22.2
Pastikan masalah Anda diisolasi untuk saat ini.

Bug

Komentar yang paling membantu

Terima kasih balasannya. Saya menggunakan NodeJS, jadi tidak ada lingkungan navigator.

Tanggal baru ()). toString () Kam 17 Jan 2019 06:53:11 GMT-0600 (Waktu Standar Tengah)
Tanggal baru ()). toLocaleString (): 1/17/2019, 6:53:11 AM
Tanggal baru ()). getTimezoneOffset (): 360
moment.version: 2.23.0
NodeJS adalah v11.6.0

Saya telah melakukan beberapa pengujian dan konfliknya adalah konstruktor 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

Semua 10 komentar

Bagaimana Anda menjalankan Bot Perselisihan Anda?

Anda berkata: _ "Ini berfungsi sebelumnya tetapi tidak lagi berfungsi" _
Apakah ada yang berubah sejak berhasil - misalnya, apakah Anda sudah memperbarui lingkungan tempat bot perselisihan Anda berjalan? Apakah format 'tanggal pembuatan akun pengguna' berubah?

Apakah Anda dapat memodifikasi kode bot perselisihan Anda untuk menampilkan keluaran di bawah ini (secara khusus menggunakan string yang di-hardcode):

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

Itu bekerja sebelum kemudian berhenti. Tidak ada kode yang diubah. Tidak ada lingkungan yang berubah dengan bot. Cara penguraian tanggal juga tampak sama.

Dan inilah yang dihasilkan konsol;

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

dan inilah cara saya menggunakannya ( this.client.moment adalah cara saya menentukan momen):

 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());

Tidak yakin apakah saya menyebutkannya atau tidak, tetapi berikut adalah versi terbaru yang saya gunakan:
"momen": "^ 2.22.2",
"momen-durasi-format": "^ 2.2.2"
dan saya menggunakan node v8.9.2

Saya mengalami masalah serupa dengan Angular 6 (aplikasi berbasis ionik) dan momen 2.22.2 mengembalikan tanggal tidak valid untuk sesuatu yang sederhana seperti ini.
moment(new Date()).fromNow();
mohon saran.

Masih terjadi di 2.23.0

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

Terima kasih telah membuka permintaan ini
Hai! Terima kasih telah mengajukan masalah ini! Sayangnya, saya tidak dapat mereproduksi ini. Bisakah Anda memberikan informasi lain?

Ini membantu jika Anda menjalankan baris ini di mesin Anda:

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

Terima kasih balasannya. Saya menggunakan NodeJS, jadi tidak ada lingkungan navigator.

Tanggal baru ()). toString () Kam 17 Jan 2019 06:53:11 GMT-0600 (Waktu Standar Tengah)
Tanggal baru ()). toLocaleString (): 1/17/2019, 6:53:11 AM
Tanggal baru ()). getTimezoneOffset (): 360
moment.version: 2.23.0
NodeJS adalah v11.6.0

Saya telah melakukan beberapa pengujian dan konfliknya adalah konstruktor 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

Saya juga terpengaruh oleh ini.
Pada awalnya, saya percaya bahwa menggunakan stempel waktu unix yang tidak lengkap (bagaimana data diberikan kepada saya) di konstruktor adalah penyebabnya, tetapi setelah menguji kode contoh dalam dokumentasi MomentJS, saya menemukan bahwa panggilan apa pun ke fromNow() mengembalikan Invalid Date .

Masalah yang sama disini.

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

Sama di sini di "moment": "^2.24.0", . Ini berfungsi dengan baik saat dijalankan di browser tetapi gagal di nodejs. Ada solusi sampai diperbaiki? @bayu_joo

Ini adalah retasan, tetapi Anda dapat mengubah ekstensi Object.prototype sehingga tidak dapat dihitung:

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'
Apakah halaman ini membantu?
0 / 5 - 0 peringkat