UTC 날짜 시간을 로컬 날짜 시간으로 변환
변수를 datetime 변수는 datetime datetime 입니다.6/29/2011 4:52:48 PM
UTC ★★★★★★★★★★★★★★★★★★★★★★★★★★★★」JavaScript를 사용하여 현재 사용자의 브라우저 시간대로 변환하고 싶습니다.
JavaScript 또는 jQuery를 사용하여 이를 수행하는 방법은 무엇입니까?
javascript의 날짜로 변환하기 전에 문자열에 'UTC'를 추가합니다.
var date = new Date('6/29/2011 4:52:48 PM UTC');
date.toString() // "Wed Jun 29 2011 09:52:48 GMT-0700 (PDT)"
제 관점에서는 서버는 항상 표준 ISO 8601 형식의 날짜/시간을 반환해야 합니다.
자세한 내용은 이쪽:
, 는 「」를 반환합니다.'2011-06-29T16:52:48.000Z'
JS Date ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」
var utcDate = '2011-06-29T16:52:48.000Z'; // ISO-8601 formatted date returned from server
var localDate = new Date(utcDate);
localDate
두 번째, 두 번째, 두 번째, 두 번째, 두 번째, 두 번째, 두 번째, 두 번째, 두 번째, 두 번째, 두 번째입니다.
서버로부터 기대하는 포맷에 일치하고 있는 한, 이러한 모든 해석 작업을 실시할 필요는 없습니다.
이것은 범용 솔루션입니다.
function convertUTCDateToLocalDate(date) {
var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000);
var offset = date.getTimezoneOffset() / 60;
var hours = date.getHours();
newDate.setHours(hours - offset);
return newDate;
}
사용방법:
var date = convertUTCDateToLocalDate(new Date(date_string_you_received));
클라이언트 로컬 설정에 따라 날짜를 표시합니다.
date.toLocaleString();
위의 해결방법은 나에게 효과가 없었다.
IE에서는 UTC 날짜 시간을 로컬로 변환하는 것이 조금 까다롭습니다.웹 이 API로 되어 있습니다.'2018-02-15T05:37:26.007'
로컬 타임존으로 변환하고 싶어서 자바스크립트에서 아래 코드를 사용했습니다.
var createdDateTime = new Date('2018-02-15T05:37:26.007' + 'Z');
클라이언트의 (UTC) 오프셋(분단위)을 얻을 수 있습니다.
var offset = new Date().getTimezoneOffset();
그리고 서버로부터 취득한 시간에 대해서, 통신원의 덧셈이나 부분 절제를 실시합니다.
이게 도움이 됐으면 좋겠다.
이것으로 충분합니다.
function convertUTCDateToLocalDate(date) {
var newDate = new Date(date.getTime() - date.getTimezoneOffset()*60*1000);
return newDate;
}
이 기능을 머릿속에 넣어두세요.
<script type="text/javascript">
function localize(t)
{
var d=new Date(t+" UTC");
document.write(d.toString());
}
</script>
그런 다음 페이지 본문의 각 날짜에 대해 다음을 생성합니다.
<script type="text/javascript">localize("6/29/2011 4:52:48 PM");</script>
GMT 및 타임존을 삭제하려면 다음 행을 변경합니다.
document.write(d.toString().replace(/GMT.*/g,""));
이것은 Adorjan Princes의 답변을 바탕으로 한 심플한 솔루션입니다.
function convertUTCDateToLocalDate(date) {
var newDate = new Date(date);
newDate.setMinutes(date.getMinutes() - date.getTimezoneOffset());
return newDate;
}
또는 단순(원래 날짜를 변환하지만):
function convertUTCDateToLocalDate(date) {
date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
return date;
}
사용방법:
var date = convertUTCDateToLocalDate(new Date(date_string_you_received));
다른 게시물을 몇 개 써봤지만 좋은 결과가 나오지 않아 효과가 있는 것 같았습니다.
convertUTCDateToLocalDate: function (date) {
return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));
}
이 방법은 로컬 날짜에서 UTC로 반대로 작동합니다.
convertLocalDatetoUTCDate: function(date){
return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
}
이 경우 마지막에 시간대를 추가합니다.'UTC':
theDate = new Date( Date.parse('6/29/2011 4:52:48 PM UTC'));
그 후 toLocale()* 함수 패밀리를 사용하여 날짜를 올바른 로케일로 표시합니다.
theDate.toLocaleString(); // "6/29/2011, 9:52:48 AM"
theDate.toLocaleTimeString(); // "9:52:48 AM"
theDate.toLocaleDateString(); // "6/29/2011"
2021-12-28T18:00:45.959Z 형식의 경우 js에서 사용할 수 있습니다.
// myDateTime is 2021-12-28T18:00:45.959Z
myDate = new Date(myDateTime).toLocaleDateString('en-US');
// myDate is 12/28/2021
myTime = new Date(myDateTime).toLocaleTimeString('en-US');
// myTime is 9:30:45 PM
"en-US"(예: "fa-IR") 대신 영역 문자열을 넣으면 됩니다.
옵션을 사용할 수도 있습니다.toLocaleTimeString
예를 들어 {시간: '2자리', 분: '2자리'}
myTime = new Date(myDateTime).toLocaleTimeString('en-US',{ hour: '2-digit', minute: '2-digit' });
// myTime is 09:30 PM
toLocaleTimeString 및 toLocaleDateString 상세 정보
Matt의 답변은 서머타임이 Date()와 변환해야 하는 날짜 사이에 다를 수 있다는 사실을 간과하고 있습니다.다음은 저의 해결책입니다.
function ConvertUTCTimeToLocalTime(UTCDateString)
{
var convertdLocalTime = new Date(UTCDateString);
var hourOffset = convertdLocalTime.getTimezoneOffset() / 60;
convertdLocalTime.setHours( convertdLocalTime.getHours() + hourOffset );
return convertdLocalTime;
}
디버거의 결과는 다음과 같습니다.
UTCDateString: "2014-02-26T00:00:00"
convertdLocalTime: Wed Feb 26 2014 00:00:00 GMT-0800 (Pacific Standard Time)
UTC 및 로컬 시간 변환 및 UTC 시간 변환에 사용합니다.
//Covert datetime by GMT offset
//If toUTC is true then return UTC time other wise return local time
function convertLocalDateToUTCDate(date, toUTC) {
date = new Date(date);
//Local time converted to UTC
console.log("Time: " + date);
var localOffset = date.getTimezoneOffset() * 60000;
var localTime = date.getTime();
if (toUTC) {
date = localTime + localOffset;
} else {
date = localTime - localOffset;
}
date = new Date(date);
console.log("Converted time: " + date);
return date;
}
괜찮으시다면moment.js
시간은 UTC 입니다.다음을 사용해 주세요.
moment.utc('6/29/2011 4:52:48 PM').toDate();
시각이 utc가 아닌 다른 로케일을 알고 있는 경우는, 다음을 사용합니다.
moment('6/29/2011 4:52:48 PM', 'MM-DD-YYYY', 'fr').toDate();
시각이 이미 로컬인 경우는, 다음을 사용합니다.
moment('6/29/2011 4:52:48 PM', 'MM-DD-YYYY');
내가 보기에 가장 간단한 것은
datetime.setUTCHours(datetime.getHours());
datetime.setUTCMinutes(datetime.getMinutes());
(첫 번째 줄이면 충분하다고 생각했는데 몇 시간 안에 꺼지는 시간대도 있습니다.)
사용.YYYY-MM-DD hh:mm:ss
포맷:
var date = new Date('2011-06-29T16:52:48+00:00');
date.toString() // "Wed Jun 29 2011 09:52:48 GMT-0700 (PDT)"
에서 변환하기 위해YYYY-MM-DD hh:mm:ss
ISO 8601 형식을 따르도록 하십시오.
Year:
YYYY (eg 1997)
Year and month:
YYYY-MM (eg 1997-07)
Complete date:
YYYY-MM-DD (eg 1997-07-16)
Complete date plus hours and minutes:
YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
Complete date plus hours, minutes and seconds:
YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
Complete date plus hours, minutes, seconds and a decimal fraction of a second
YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00) where:
YYYY = four-digit year
MM = two-digit month (01=January, etc.)
DD = two-digit day of month (01 through 31)
hh = two digits of hour (00 through 23) (am/pm NOT allowed)
mm = two digits of minute (00 through 59)
ss = two digits of second (00 through 59)
s = one or more digits representing a decimal fraction of a second
TZD = time zone designator (Z or +hh:mm or -hh:mm)
주의사항
- 날짜와 시간은 다음 문자로 구분해야 합니다.
T
일부 브라우저에서는 공백이 작동하지 않습니다. - 이 형식을 사용하여 표준 시간대를 설정해야 합니다.
+hh:mm
시간대 문자열(예: 'UTC')을 사용하면 대부분의 브라우저에서 작동하지 않습니다.+hh:mm
는 UTC 타임존으로부터의 오프셋을 나타냅니다.
JSON 날짜 문자열(C#으로 일련화됨)은 "2015-10-13T18:58:17"과 같습니다.
각도에서, (Hulvej에 이어)를 만듭니다.localdate
필터:
myFilters.filter('localdate', function () {
return function(input) {
var date = new Date(input + '.000Z');
return date;
};
})
다음으로 현지 시간을 다음과 같이 표시합니다.
{{order.createDate | localdate | date : 'MMM d, y h:mm a' }}
저는 이게 잘 되는 것 같아요.
if (typeof date === "number") {
time = new Date(date).toLocaleString();
} else if (typeof date === "string"){
time = new Date(`${date} UTC`).toLocaleString();
}
UTC를 현지 시간으로 변환하기 위해 다음과 같이 하고 있습니다.
const dataDate = '2020-09-15 07:08:08'
const utcDate = new Date(dataDate);
const myLocalDate = new Date(Date.UTC(
utcDate.getFullYear(),
utcDate.getMonth(),
utcDate.getDate(),
utcDate.getHours(),
utcDate.getMinutes()
));
document.getElementById("dataDate").innerHTML = dataDate;
document.getElementById("myLocalDate").innerHTML = myLocalDate;
<p>UTC<p>
<p id="dataDate"></p>
<p>Local(GMT +7)<p>
<p id="myLocalDate"></p>
결과 : 2020년 9월 15일 (화)14:08:00 GMT+0700 (인도시간)
I Answering This If 특정 ID 요소로 변환된 시간을 표시하고 날짜 형식 문자열 yyy-mm-dd를 적용하는 함수를 원하는 경우 date1은 문자열이고 id는 표시하는 요소의 ID입니다.
function convertUTCDateToLocalDate(date1, ids)
{
var newDate = new Date();
var ary = date1.split(" ");
var ary2 = ary[0].split("-");
var ary1 = ary[1].split(":");
var month_short = Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
newDate.setUTCHours(parseInt(ary1[0]));
newDate.setUTCMinutes(ary1[1]);
newDate.setUTCSeconds(ary1[2]);
newDate.setUTCFullYear(ary2[0]);
newDate.setUTCMonth(ary2[1]);
newDate.setUTCDate(ary2[2]);
ids = document.getElementById(ids);
ids.innerHTML = " " + newDate.getDate() + "-" + month_short[newDate.getMonth() - 1] + "-" + newDate.getFullYear() + " " + newDate.getHours() + ":" + newDate.getMinutes() + ":" + newDate.getSeconds();
}
그 답변은 이미 받아들여진 것으로 알고 있지만, 구글의 영향으로 이 자리에 왔고, 받아들여진 답변에서 영감을 얻어서 해결했기 때문에 누군가 필요하다면 그냥 공유하고 싶었습니다.
@Adorojan's
정답이 거의 맞네요.그러나 브라우저 날짜가 GMT보다 이전일 경우 오프셋 값이 음수이고 그 반대일 경우 오프셋 값이 음수이기 때문에 오프셋의 추가는 올바르지 않습니다.아래는 제가 가지고 온 솔루션이며, 완벽하게 기능하고 있습니다.
// Input time in UTC
var inputInUtc = "6/29/2011 4:52:48";
var dateInUtc = new Date(Date.parse(inputInUtc+" UTC"));
//Print date in UTC time
document.write("Date in UTC : " + dateInUtc.toISOString()+"<br>");
var dateInLocalTz = convertUtcToLocalTz(dateInUtc);
//Print date in local time
document.write("Date in Local : " + dateInLocalTz.toISOString());
function convertUtcToLocalTz(dateInUtc) {
//Convert to local timezone
return new Date(dateInUtc.getTime() - dateInUtc.getTimezoneOffset()*60*1000);
}
@digitalbath answer를 기반으로 UTC 타임스탬프를 캡처하여 특정 DOM 요소의 로컬 시간을 표시하는 작은 함수를 다음에 나타냅니다(이 마지막 부분에 jQuery 사용).
https://jsfiddle.net/moriz/6ktb4sv8/1/
<div id="eventTimestamp" class="timeStamp">
</div>
<script type="text/javascript">
// Convert UTC timestamp to local time and display in specified DOM element
function convertAndDisplayUTCtime(date,hour,minutes,elementID) {
var eventDate = new Date(''+date+' '+hour+':'+minutes+':00 UTC');
eventDate.toString();
$('#'+elementID).html(eventDate);
}
convertAndDisplayUTCtime('06/03/2015',16,32,'eventTimestamp');
</script>
momentjs를 사용할 수 있습니다.moment(date).format()
는 항상 로컬 날짜에 결과를 제공합니다.
보너스, 원하는 방식으로 포맷할 수 있습니다.예를 들면.
moment().format('MMMM Do YYYY, h:mm:ss a'); // September 14th 2018, 12:51:03 pm
moment().format('dddd'); // Friday
moment().format("MMM Do YY");
자세한 내용은 Moment js 웹사이트를 참조하십시오.
safari/safari/safari에서 잘 작동했습니다.
const localDate = new Date(`${utcDate.replace(/-/g, '/')} UTC`);
이것이 최선의 해결책이라고 생각합니다.
let date = new Date(objDate);
date.setMinutes(date.getTimezoneOffset());
그러면 날짜가 분 단위로 표시되므로 오프셋으로 적절히 업데이트됩니다.
dayjs 라이브러리 사용:
(new Date()).toISOString(); // returns 2021-03-26T09:58:57.156Z (GMT time)
dayjs().format('YYYY-MM-DD HH:mm:ss,SSS'); // returns 2021-03-26 10:58:57,156 (local time)
에 다음 작업을 해야 합니다. ( nodejs 서 、 nodejs 에 、 nodejs 에 、 nodejs 에 、 nodejs 에 、 nodejs 에 、 nodejs ) const dayjs = require('dayjs');
을 참조해 dayjs "dayjs "Dayjs "Dayjs")
이건 내 편이야
옵션 1: 날짜 형식이 "yyy-mm-dd" 또는 "yyy-mm-dd H:n:s"와 같은 경우: "2021-12-16 06:07:40"
이 형식에서는 로컬 형식인지 UTC 시간인지 알 수 없습니다.따라서 날짜가 UTC임을 알 수 있으므로 JS가 UTC임을 알 수 있도록 해야 합니다.그래서 우리는 날짜를 UTC로 설정해야 합니다.
function setDateAsUTC(d) {
let date = new Date(d);
return new Date(
Date.UTC(
date.getFullYear(),
date.getMonth(),
date.getDate(),
date.getHours(),
date.getMinutes(),
date.getSeconds()
)
);
}
그리고 그것을 사용한다.
let d = "2021-12-16 06:07:40";
setDateAsUTC(d).toLocaleString();
// output: 12/16/2021, 6:07:40 AM
옵션 2: UTC 날짜 형식이 ISO-8601인 경우.대부분의 서버 타임스탬프 형식은 ISO-8601 ex: '2011-06-29'입니다.T16:52:48.000Z' 입니다.이를 통해 date 함수와 toLocaleString() 함수에 전달할 수 있습니다.
let newDate = "2011-06-29T16:52:48.000Z"
new Date(newDate).toLocaleString();
//output: 6/29/2011, 4:52:48 PM
UTC epoch를 사용하여 클라이언트 시스템 시간대로 변환하고 d/m/Y H:i:s(PHP 날짜 함수처럼) 형식으로 반환하는 멋진 스크립트를 작성했습니다.
getTimezoneDate = function ( e ) {
function p(s) { return (s < 10) ? '0' + s : s; }
var t = new Date(0);
t.setUTCSeconds(e);
var d = p(t.getDate()),
m = p(t.getMonth()+1),
Y = p(t.getFullYear()),
H = p(t.getHours()),
i = p(t.getMinutes()),
s = p(t.getSeconds());
d = [d, m, Y].join('/') + ' ' + [H, i, s].join(':');
return d;
};
Angular에서 나는 Ben의 대답을 다음과 같이 사용했다.
$scope.convert = function (thedate) {
var tempstr = thedate.toString();
var newstr = tempstr.toString().replace(/GMT.*/g, "");
newstr = newstr + " UTC";
return new Date(newstr);
};
편집: Angular 1.3.0이 UTC 지원을 날짜 필터에 추가했습니다. 아직 사용하지 않았지만 더 쉬울 것입니다. 형식은 다음과 같습니다.
{{ date_expression | date : format : timezone}}
모든 시간대를 현지 시간으로 변환하는 기능을 하나 만들었습니다.
get Timezone Offset()은 적절한 오프셋 값을 반환하지 않기 때문에 사용하지 않았습니다.
요건:
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"
언급URL : https://stackoverflow.com/questions/6525538/convert-utc-date-time-to-local-date-time
'programing' 카테고리의 다른 글
VueJs 콧수염 데이터 바인딩이 작동하지 않습니다.디버깅하려면 어떻게 해야 하나요? (0) | 2022.09.05 |
---|---|
옵션을 사용하여 명령줄에서 .sql 파일을 내보내고 가져오려면 어떻게 해야 합니까? (0) | 2022.09.05 |
Javascript에서 문자열에 포함된 문자의 발생 횟수를 카운트합니다. (0) | 2022.09.05 |
Vue.js의 루트 요소에서 내보낸 이벤트를 재생하려면 어떻게 해야 합니까? (0) | 2022.09.05 |
mariaDb, mySQL을 사용하여 반경 내의 모든 공간 유형 지점(km)을 가져옵니다. (0) | 2022.09.05 |