Ich benutze Angularjs.Angularjs Sekunden zu Zeit Filter
Ich habe Zeichenfolge der Nummer, Beispiel: 237
. Es bedeutet Sekunden. Ich brauche es zu ändern: 2:34
oder 3:42:54
.
Ich brauche Sekunden zu Zeit Filter. Wie soll ich es machen?
danke.
Ich benutze Angularjs.Angularjs Sekunden zu Zeit Filter
Ich habe Zeichenfolge der Nummer, Beispiel: 237
. Es bedeutet Sekunden. Ich brauche es zu ändern: 2:34
oder 3:42:54
.
Ich brauche Sekunden zu Zeit Filter. Wie soll ich es machen?
danke.
versuchen, etwas wie folgt aus:
app.filter('secondsToDateTime', [function() {
return function(seconds) {
return new Date(1970, 0, 1).setSeconds(seconds);
};
}])
html:
<b>{{seconds | secondsToDateTime | date:'HH:mm:ss'}}</b>
Ich denke, es ist nicht notwendig, das benutzerdefinierte Filter
<b>{{hours}}{{seconds | date:':mm:ss'}}</b>
function Scoper($scope) {
$scope.seconds = '79000';
$scope.hours = parseInt($scope.seconds/3600);
}
Der benutzerdefinierte Filter ist möglicherweise nicht notwendig, aber die Sekunde, die Sie diese Logik auf einer anderen Seite benötigen, würde sich die minimale zusätzliche Zeitinvestition, um einen Filter oder eine Richtlinie zu haben, dann auszahlen. Und du könntest dies im Root-Bereich speichern, aber das ist ein weiterer Codesmell, den du ignorieren solltest. – Mattygabe
manzapanza ist ein nswer funktioniert nur, wenn die Sekunden weniger als 86400 (1 Tag) sind. Das Datumsobjekt muss vollständig Null sein. Außerdem wäre es besser, das tatsächliche date-Objekt zurückzugeben, so dass anglejs es nicht erneut machen muss.
app.filter('secondsToDateTime', function() {
return function(seconds) {
var d = new Date(0,0,0,0,0,0,0);
d.setSeconds(seconds);
return d;
};
});
und
<b>{{seconds | secondsToDateTime | date:'HH:mm:ss'}}</b>
Edit: Wenn Sie Stunden über 24 gehen wollen, ohne zu Tage Einwickeln es besser ist, nicht Datum zu verwenden:
app.filter('secondsToTime', function() {
function padTime(t) {
return t < 10 ? "0"+t : t;
}
return function(_seconds) {
if (typeof _seconds !== "number" || _seconds < 0)
return "00:00:00";
var hours = Math.floor(_seconds/3600),
minutes = Math.floor((_seconds % 3600)/60),
seconds = Math.floor(_seconds % 60);
return padTime(hours) + ":" + padTime(minutes) + ":" + padTime(seconds);
};
});
und
<b>{{seconds | secondsToTime}}</b>
von @manzapanza Lösung für Tage:
$scope.duration_for = function(seconds){
if(!seconds) return
var duration = new Date(1970, 0, 1).setSeconds(seconds)
var mask = 'HH:mm'
if(seconds >= 86400){
mask = 'd days,' + mask
}
return $filter('date')(duration, mask);
}
im Blick:
{{duration_for(100500)}}
app.filter('formatTimer', function() {
return function (input) {
function z(n) { return (n < 10 ? '0' : '') + n; }
var seconds = input % 60;
var minutes = Math.floor(input % 3600/60);
var hours = Math.floor(input/3600);
return (z(hours) + ':' + z(minutes) + ':' + z(seconds));
};
AUSGABE: 02:04:14
Versuchen Sie folgendes:
app.filter('secondsToHHmmss', function($filter) {
return function(seconds) {
return $filter('date')(new Date(0, 0, 0).setSeconds(seconds), 'HH:mm:ss');
};
})
html:
<b>{{seconds | secondsToHHmmss}}</b>
Ich musste die '[]' fallen lassen, um dies zu machen und Sekunden durch 1000 zu teilen, da ich mit Millisekunden zu tun hatte –
Danke. Gerade überarbeitet. – endru
Vielleicht '237' auf' 2 geändert werden muss: 37'? Warum '3: 42: 54'? Was ist die Logik in der Veränderung? –
237 ist Sekunden. –
Ihre Logik, wie 237 Sekunden zu 2:34 konvertiert werden, ist unklar. 237 Sekunden sind 3 Minuten und 57 Sekunden (60 * 3 + 57 = 237 Sekunden). Wie kommst du zu 2:34? Oder soll 2:34 die Uhrzeit (14:34) sein? Nichts davon macht wirklich Sinn, bis Sie die Logik erklären können, wie Sie 237 Sekunden in 2:34 oder 3:42:54 übersetzen. –