Я пробовал угловые документы {{someDate | date: 'params'}}, однако; Это не работает, если someDate находится в этом формате yyyy-MM-dd HH: mm: ss.

Как мне преобразовать yyyy-MM-dd HH: mm: ss, чтобы сказать просто yyyy, используя angularjs.

1
Carlos Pliego 14 Мар 2014 в 19:29

4 ответа

Лучший ответ

Фильтр даты предназначен для обработки нескольких типов ввода, включая объекты даты и общие строки даты. . Если ваша строка даты не распознается предоставленным фильтром даты, я бы просто написал свой собственный фильтр. Это выглядело бы примерно так ...

myapp.filter('toYear', function () {
     return function (dateString) {
         var dateObject = new Date(dateString);
         return dateObject.getFullYear();
     };
});

Вы можете использовать это так ...

{{someDate | toYear}}
2
Charlie Martin 14 Мар 2014 в 15:50

Объект даты Angular js не поддерживает прямое преобразование из формата даты MySql в метку времени. Поэтому необходимо преобразовать его в приемлемый формат из YYYY-mm-dd H:i:s в YYYY/mm/dd H:i:s, а затем преобразовать в метку времени.

Вы можете попробовать приведенный ниже фрагмент, чтобы преобразовать формат даты Mysql YYYY-mm-dd H:i:s в метку времени с помощью фильтра AngularJs

app.filter("mysqlDateFormatToTimestamp", function(){
    return function(date){
        var date1 =  date2 = date3 = timestamp = hours = minutes = seconds = '';               
        date1 = date.split(':'); 
        date2 = date1[0].split(' '); 
        date3 = date2[0].split('-'); // Change it based on your format
        if( date1.length == 1 && date2.length == 1 ){
            hours = '00';
            minutes = '00';
            seconds = '00';
        }else{
            hours = parseInt(date2[1]);
            minutes = parseInt(date1[1]);
            seconds = parseInt(date1[2]);
        } 
        timestamp = new Date(parseInt(date3[0]), parseInt(date3[1])-1, parseInt(date3[2]), hours, minutes, seconds);
        return timestamp;
   } 
});

Теперь вы можете использовать этот фильтр в любом желаемом формате даты, и вы можете изменять параметры по своему усмотрению.

   {{ '2016-07-07 05:27:30' | mysqlDateFormatToTimestamp | date:'LLLL dd, yyyy HH:mm:ss'}} 
   // results would comes like "July 07, 2016 05:27:30"

   {{ '2016-07-07 05:27:30' | mysqlDateFormatToTimestamp | date:'yyyy'}} 
   // results would comes like "2016"
0
Ken Van Hoeylandt 7 Июл 2016 в 13:41

На самом деле я исправил решение здесь:

app.filter('timestampToISO', function() {
    return function(input) {
        input = new Date(input).toISOString();
        return input;
    };
});

http://bit.ly/1iJAV8G

ОБНОВИТЬ:

Чтобы реализовать, вы добавляете это в представление:

{{someSQLTIMESTAMP | timestampToISO | date}}
0
BrightIntelDusk 19 Мар 2014 в 00:28

Вы можете определить собственный формат следующим образом

Date.prototype.customFormat = function(){
    return this.getMonth() + 
    "/" +  this.getDate() +
    "/" +  this.getFullYear();
}

//usage

> var d = new Date()
Fri Mar 14 2014 15:39:07 GMT+0000 (GMT Standard Time)
> d.customFormat()
'2/14/2014'

Подробнее https://developer.mozilla.org/en -US / docs / Web / JavaScript / Reference / Global_Objects / DateTimeFormat

0
dopplesoldner 14 Мар 2014 в 15:40