기본 MySQL 날짜 시간을 포맷할 수 없습니다.
내 날짜는 데이터베이스에서 다음과 같이 나옵니다.2013-11-21 17:43:20
앵귤러의 데이트 필터를 이용해서 더 예쁜 걸로 만들려고 하는데...
{{Objected.created | date:'shortDate'}}
아니면
{{Objected.created | date:'YYYY'}}
...그냥 원래 날짜 시간 문자열을 말합니다.2013-11-21 17:43:20
. 오류가 없습니다.내가 뭘 잘못하고 있는 거지?
업데이트 MySQL의 기본 날짜 시간이 Angular의 데이터 필터에서 예상하는 것과 호환되지 않음을 알 수 있습니다.이렇게 즉석에서 변환을 시도하고 있는데 오류가 발생하고 있습니다.
<li ng-repeat="result in data">{{ new Date(result.Job.created).toISOString() | date:'shortDate'}}</li>
제가 시도하는 방식으로는 Date 클래스를 인스턴스화할 수 없을 것 같습니다.오류는 $parse: 구문 오류입니다.
갱신하다
@m59의 도움 덕분에 몇 가지 사소한 조정을 통해 해결할 수 있었습니다.
HTML:
<html ng-app="myApp">
...
{{Object.created | dateToISO | date:'shortDate'}}
JS:
var myApp = angular.module('myApp',[]);
myApp.filter('dateToISO', function() {
return function(input) {
input = new Date(input).toISOString();
return input;
};
});
이 사용자 지정 필터는 기본 MySQL 날짜 시간을 날짜 필터가 예상하는 형식으로 변환하므로 하나씩 던지고 "voila"를 보냅니다.
날짜 문자열을 ISO 8601 형식과 같이 Angular에서 지원하는 것으로 변환해야 합니다.다음과 같이 변환할 수 있습니다.
$scope.Object.created = new Date($scope.Object.created).toISOString();
이 작업을 신속하게 수행하려면 사용자 지정 필터가 필요합니다.라이브 데모는 여기서(클릭)
마크업:
<div>{{Object.created | dateToISO | date:'shortDate'}}</div>
자바스크립트:
app.filter('dateToISO', function() {
return function(input) {
return new Date(input).toISOString();
};
});
업데이트:
다음은 수동으로 날짜를 변환하는 간단한 방법입니다(파이어폭스).
app.filter('badDateToISO', function() {
return function(badTime) {
var goodTime = badTime.replace(/(.+) (.+)/, "$1T$2Z");
return goodTime;
};
});
지정한 날짜 형식이 잘못되었습니다.YYYY
그래야 한다yyyy
, 다른 예를 위해 설명서를 봅니다.
또한 포맷하려는 날짜 문자열이 Angular가 가지고 있는 사양과 일치하지 않습니다.
날짜 개체, 밀리초(문자열 또는 숫자) 또는 다양한 ISO 8601 날짜 시간 문자열 형식(예: yyy-MM-ddTHH:mm:ss.SSZ 및 yyy-MM-ddTHH:mmZ, yyy-MM-dd 또는 yyyy와 같은 짧은 버전)으로 포맷할 날짜MMDDTHHmssZ).문자열 입력에 시간대가 지정되지 않은 경우 시간은 로컬 시간대인 것으로 간주됩니다.
원본 문자열을 검색하는 곳에 상관없이 이 형식 중 하나로 저장/검색할 것을 권장합니다.
올바른 형식을 사용하는 JSFiddle 예제.
나는 이것을 위해 다음과 같이 파이프를 만들었습니다.
import { Pipe } from "@angular/core";
@Pipe({이름: 'DateToIso'}) 클래스 DateToIso { 내보내기
transform(value, args) {
var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
var parts=value.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
var converted = new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
let newValue = converted.toISOString();
return newValue;
}
}
나는 파이프를 만들었습니다.
import { Pipe } from "@angular/core";
@파이프({ 이름:DateToIso' }) 클래스 DateToIso { 내보내기
transform(value, args) {
var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
var parts=value.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
var converted = new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
let newValue = converted.toISOString();
return newValue;
}
}
템플릿에 사용할 수 있습니다.
{{ p.sessionTimeFinish | DateToIso | date: "HH:mm" }}
각2 파이프
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'toIso'
})
export class ToIsoPipe implements PipeTransform {
transform(value: string): unknown {
return value.replace(' ', 'T');
}
}
// INPUT : "2020-08-20 09:00:20"
// OUTPUT : "2020-08-20T09:00:20"
예
{{response.created | toIso | date:'MMM d, h:mm a'}}
언급URL : https://stackoverflow.com/questions/20709910/unable-to-format-default-mysql-datetime
'source' 카테고리의 다른 글
각도 ui 부트스트랩 모달에서 클릭했을 때 배경 클릭 이벤트를 잡는 방법? (0) | 2023.10.29 |
---|---|
Oracle 사이클을 사용하여 각 ID에 대해 전체 경로 탐색 (0) | 2023.10.29 |
CMake에서 C99 강제 적용('for' loop 초기 선언 사용 (0) | 2023.10.29 |
크롬과 파이어폭스의 클립보드 자바스크립트 기능에 비밀복사? (0) | 2023.10.29 |
<=>이 V8에서 이 코드 조각을 사용하는 것보다 느린 이유는 무엇입니까? (0) | 2023.10.29 |