К сожалению, вы не можете различать тип метода для вызова, основанный только на ограничениях.
Поэтому вам нужно определить метод в другом классе или с другим именем.
пряжа добавляет момент
import moment from 'moment';
//local Js date to UTC using moment
const utcDate = moment.utc(moment(new date()).format('YYYY-MM-DDTHH:mm:ss')).valueOf();
console.log('UTC Date', utcDate);
// UTC to local date without moment
const localDate = convertUTCDateToLocalDate(new Date(utcDate))
console.log('UTC Date', moment(localDate).format('MMM D, YYYY HH:mm'));
function convertUTCDateToLocalDate(date) {
let newDate = new Date(date.getTime() + date.getTimezoneOffset()*60*1000);
const offset = date.getTimezoneOffset() / 60;
const hours = date.getHours();
newDate.setHours(hours - offset);
return newDate;
}
Вы пытаетесь преобразовать дату в такую строку?
Я бы создал функцию для этого и, хотя это немного противоречиво, добавил бы ее к прототипу Date. Если вам неудобно это делать, вы можете поместить ее как отдельную функцию, передав дату в качестве параметра.
Date.prototype.getISOString = function() {
var zone = '', temp = -this.getTimezoneOffset() / 60 * 100;
if (temp >= 0) zone += "+";
zone += (Math.abs(temp) < 100 ? "00" : (Math.abs(temp) < 1000 ? "0" : "")) + temp;
// "2009-6-4T14:7:32+10:00"
return this.getFullYear() // 2009
+ "-"
+ (this.getMonth() + 1) // 6
+ "-"
+ this.getDate() // 4
+ "T"
+ this.getHours() // 14
+ ":"
+ this.getMinutes() // 7
+ ":"
+ this.getSeconds() // 32
+ zone.substr(0, 3) // +10
+ ":"
+ String(temp).substr(-2) // 00
;
};
Если вам это нужно во времени UTC, просто замените все функции get * на getUTC *, например : getUTCFullYear, getUTCMonth, getUTCHours ... а затем просто добавьте "+00: 00" в конце вместо смещения часового пояса пользователя.
var myDate = new Date(); // Set this to your date in whichever timezone.
var utcDate = myDate.toUTCString();
Date.prototype.toUTCArray= function(){
var D= this;
return [D.getUTCFullYear(), D.getUTCMonth(), D.getUTCDate(), D.getUTCHours(),
D.getUTCMinutes(), D.getUTCSeconds()];
}
Date.prototype.toISO= function(){
var tem, A= this.toUTCArray(), i= 0;
A[1]+= 1;
while(i++<7){
tem= A[i];
if(tem<10) A[i]= '0'+tem;
}
return A.splice(0, 3).join('-')+'T'+A.join(':');
}
Я только что обнаружил, что версия 1.2.3 date.format.js Стивена Левитана делает именно то, что я хочу. Он позволяет вам предоставить строку формата для даты JavaScript и преобразует местное время в UTC. Вот код, который я использую сейчас:
// JavaScript dates don't like hyphens!
var rectifiedDateText = dateText.replace(/-/g, "/");
var d = new Date(rectifiedDateText);
// Using a predefined mask from date.format.js.
var convertedDate = dateFormat(d, 'isoUtcDateTime');