Saya mencoba mengonversi waktu UTC ke waktu lokal. Saya telah mengikuti contoh ini dari tautan ini: http://jsfiddle.net/FLhpq/4/light/ . Sepertinya saya tidak bisa mendapatkan hasil lokal yang tepat. Misalnya, jika 10:30 di sini, daripada 10:30 sakit dapatkan 15:30. Ini kode saya:
var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');
var localTime = moment.utc(date).toDate();
localTime = moment(localTime).format('YYYY-MM-DD HH:mm:ss');
console.log("moment: " + localTime);
Apapun yang saya lakukan, waktu selalu keluar pada waktu UTC. Saya tinggal di Houston jadi saya tahu zona waktu adalah masalahnya. Saya telah mengikuti kode di tautan tetapi sepertinya bisa mengetahui waktu setempat. Apa yang saya lakukan salah?
javascript
date
momentjs
brian Scroggins
sumber
sumber
moment().format('Z')
danmoment().format('ZZ')
dapat membantu Anda. Juga, lihat(new Date()).getTimezoneOffset()
mungkin itu cukup untuk kasus Anda.utc(date)
. Pada bagian pertama, baris yangvar local = ...
tidak memilikinya bisa menyesatkan.Coba ini:
let utcTime = "2017-02-02 08:00:13"; var local_date= moment.utc(utcTime ).local().format('YYYY-MM-DD HH:mm:ss');
sumber
let utcTime = "2017-02-02 08:00:13.567"; var offset = moment().utcOffset(); var localText = moment.utc(utcTime).utcOffset(offset).format("L LT");
Coba JsFiddle ini
sumber
Untuk mengubah UTC ke waktu lokal
let UTC = moment.utc() let local = moment(UTC).local()
Atau Anda ingin langsung mendapatkan waktu setempat
let local = moment()
var UTC = moment.utc() console.log(UTC.format()); // UTC time var cLocal = UTC.local() console.log(cLocal.format()); // Convert UTC time var local = moment(); console.log(local.format()); // Local time
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
sumber
Catatan: harap perbarui format tanggal yang sesuai.
Format Tanggal
__formatDate: function(myDate){ var ts = moment.utc(myDate); return ts.local().format('D-MMM-Y'); }
Format Waktu
__formatTime: function(myDate){ var ts = moment.utc(myDate); return ts.local().format('HH:mm'); },
sumber
Saya telah membuat satu fungsi yang mengubah semua zona waktu menjadi waktu lokal.
Persyaratan:
1. npm i moment-timezone function utcToLocal(utcdateTime, tz) { var zone = moment.tz(tz).format("Z") // Actual zone value e:g +5:30 var zoneValue = zone.replace(/[^0-9: ]/g, "") // Zone value without + - chars var operator = zone && zone.split("") && zone.split("")[0] === "-" ? "-" : "+" // operator for addition subtraction var localDateTime var hours = zoneValue.split(":")[0] var minutes = zoneValue.split(":")[1] if (operator === "-") { localDateTime = moment(utcdateTime).subtract(hours, "hours").subtract(minutes, "minutes").format("YYYY-MM-DD HH:mm:ss") } else if (operator) { localDateTime = moment(utcdateTime).add(hours, "hours").add(minutes, "minutes").format("YYYY-MM-DD HH:mm:ss") } else { localDateTime = "Invalid Timezone Operator" } return localDateTime } utcToLocal("2019-11-14 07:15:37", "Asia/Kolkata") //Returns "2019-11-14 12:45:37"
sumber
Inilah yang berhasil bagi saya, ini membutuhkan momen-tz dan juga momen.
const guess = moment.utc(date).tz(moment.tz.guess()); const correctTimezone = guess.format()
sumber
Saya telah menulis Codesandbox ini untuk perjalanan pulang pergi dari UTC ke waktu lokal dan dari waktu lokal ke UTC. Anda dapat mengubah zona waktu dan formatnya. Nikmati!
Contoh Lengkap tentang Codesandbox ( DEMO ):
https://codesandbox.io/s/momentjs-utc-to-local-roundtrip-foj57?file=/src/App.js
sumber