각도 사용UTC 날짜가 있는 JS 날짜 필터
인간 포맷을 위해 Angular의 날짜 필터에 전달되는 UTC 날짜가 밀리초 단위로 표시됩니다.
{{someDate | date:'d MMMM yyyy'}}
대단해, 하지만someDate
는 UTC로, 날짜 필터는 그것을 현지 시간으로 간주합니다.
Angular에게 어떻게 말할 수 있지?someDate
UTC입니까?
감사해요.
앵귤러인 것 같다JS 사람들이 버전 1.3.0에서 작업을 진행하고 있습니다.당신이 해야 할 일은 추가만 하면 됩니다.: 'UTC'
형식 문자열 뒤에 있습니다.예를 들어 다음과 같습니다.
{{someDate | date:'d MMMM yyyy' : 'UTC'}}
문서에서 볼 수 있듯이 Plunker 예제에서도 플레이할 수 있습니다.
그런데 Z 파라미터에 버그가 있는 것 같습니다. 왜냐하면 UTC를 사용해도 로컬 타임존이 표시되기 때문입니다.
여기서도 같은 질문입니다.
답변을 다시 게시하고 병합을 제안합니다.
출력 UTC는 혼란의 대상인 것 같습니다.사람들은 모멘트에 끌리는 것 같습니다.
이 답변에서 빌리면 다음과 같은 작업을 수행할 수 있습니다(UTC 생성자를 사용하여 날짜를 작성하는 변환 함수를 사용).js:
컨트롤러
var app1 = angular.module('app1',[]);
app1.controller('ctrl',['$scope',function($scope){
var toUTCDate = function(date){
var _utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
return _utc;
};
var millisToUTCDate = function(millis){
return toUTCDate(new Date(millis));
};
$scope.toUTCDate = toUTCDate;
$scope.millisToUTCDate = millisToUTCDate;
}]);
템플릿
<html ng-app="app1">
<head>
<script data-require="angular.js@*" data-semver="1.2.12" src="http://code.angularjs.org/1.2.12/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div ng-controller="ctrl">
<div>
utc {{millisToUTCDate(1400167800) | date:'dd-M-yyyy H:mm'}}
</div>
<div>
local {{1400167800 | date:'dd-M-yyyy H:mm'}}
</div>
</div>
</body>
</html>
가지고 놀 수 있는 더 좋은 방법이 있다
또한 이 방법을 사용하면 Angular의 날짜 필터에서 'Z'를 사용하면 로컬 시간대 오프셋이 인쇄되는 것 같습니다.
다음은 날짜 문자열 또는 Javascript Date() 개체를 사용하는 필터입니다.Moment.js를 사용하여 인기 있는 'FromNow' 등 모든 Moment.js 변환 기능을 적용할 수 있습니다.
angular.module('myModule').filter('moment', function () {
return function (input, momentFn /*, param1, param2, ...param n */) {
var args = Array.prototype.slice.call(arguments, 2),
momentObj = moment(input);
return momentObj[momentFn].apply(momentObj, args);
};
});
그래서...
{{ anyDateObjectOrString | moment: 'format': 'MMM DD, YYYY' }}
2014년 11월 11일에 표시됩니다.
{{ anyDateObjectOrString | moment: 'fromNow' }}
10분 전에 표시됩니다.
여러 모멘트 함수를 호출해야 할 경우 함수를 체인으로 연결할 수 있습니다.UTC로 변환된 후 포맷됩니다.
{{ someDate | moment: 'utc' | moment: 'format': 'MMM DD, YYYY' }}
angular.http://https://github.com/angular/angular.js/issues/6546#issuecomment-36721868에 이에 대한 버그가 있습니다.
진화된 버전의 osek 솔루션
사용자 정의 필터가 더 적합하므로 프로젝트 내 어디에서나 사용할 수 있습니다.
js 파일
var myApp = angular.module('myApp',[]);
myApp.filter('utcdate', ['$filter','$locale', function($filter, $locale){
return function (input, format) {
if (!angular.isDefined(format)) {
format = $locale['DATETIME_FORMATS']['medium'];
}
var date = new Date(input);
var d = new Date()
var _utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
return $filter('date')(_utc, format)
};
}]);
템플릿으로
<p>This will convert UTC time to local time<p>
<span>{{dateTimeInUTC | utcdate :'MMM d, y h:mm:ss a'}}</span>
moment.js를 사용하는 경우 moment().utc() 함수를 사용하여 모멘트 객체를 UTC로 변환합니다.moment().format() 함수를 사용하여 뷰 대신 컨트롤러 내에서 적절한 포맷을 처리할 수도 있습니다.예를 들어 다음과 같습니다.
moment(myDate).utc().format('MM/DD/YYYY')
몇 가지 조사 결과 UTC를 현지 시간으로 변환하기 위한 좋은 해결책을 찾을 수 있었습니다. 바이올린을 한 번 보세요.도움이 되었으면 좋겠다
https://jsfiddle.net/way2ajay19/2kramzng/20/
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-controller="MyCtrl">
{{date | date:'yyyy-mm-dd hh:mm:ss' }}
</div>
<script>
function MyCtrl($scope) {
$scope.d = "2017-07-21 19:47:00";
$scope.d = $scope.d.replace(" ", 'T') + 'Z';
$scope.date = new Date($scope.d);
}
</script>
UTC 형식으로 표시하는 커스텀필터도 작성할 수 있습니다.를 사용한 것에 주의해 주세요.
var app = angular.module('myApp', []);
app.controller('dateCtrl', function($scope) {
$scope.today = new Date();
});
app.filter('utcDate', function() {
return function(input) {
return input.toUTCString();
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<div ng-app="myApp" ng-controller="dateCtrl">
Today is {{today | utcDate}}
</div>
필터를 다음과 같이 선언할 수 있습니까?
app.filter('dateUTC', function ($filter) {
return function (input, format) {
if (!angular.isDefined(format)) {
format = 'dd/MM/yyyy';
}
var date = new Date(input);
return $filter('date')(date.toISOString().slice(0, 23), format);
};
});
에서 작업하고 있는 경우.넷에 이어 내부 web.config에 다음 추가
<system.web>
문제를 해결합니다.
<globalization culture="auto:en-US" uiCulture="auto:en-US" />
언급URL : https://stackoverflow.com/questions/20662140/using-angularjs-date-filter-with-utc-date
'programing' 카테고리의 다른 글
Newtonsoft를 사용하여 C#(4.0)의 json 문자열을 해석하는 방법Json 패키지? (0) | 2023.03.18 |
---|---|
C#을 사용하여 JSON 텍스트를 개체로 변환하는 방법 (0) | 2023.03.18 |
"프로젝트 검색.." 기능이 Eclipse IDE에 있습니까? (0) | 2023.03.13 |
PLSQL : 신규 및 :늙은 (0) | 2023.03.13 |
ORACLE IIF 스테이트먼트 (0) | 2023.03.13 |