Jedes dieser Beispiele gibt das vollständige Datum und/oder die Uhrzeit einer Aktivität an - sei es ein veröffentlichter Artikel oder ein Leser -Kommentar oder vielleicht ein hochgeladenes Video.
Date -Formate wie diese mögen vollkommen vernünftig erscheinen. Immerhin sind sie informativ und menschlich lesbar! Ja, aber "menschlich lesbar" bedeutet nicht, dass Benutzer ohne weiteres verstehen können, wie kürzlich die Aktivität aufgetreten ist. Das Web ist ein sich schnell bewegender Ort, und es könnte der Schlüssel für die Zusammenarbeit mit Ihrem Publikum sein! Schauen wir uns also an, wie wir diese gemeinsamen Datumsformate verbessern können.
Ein kleiner Trick
veröffentlicht am 12. September 2016… oder das:
veröffentlicht am 2016-09-12, 09:41:23Das Problem mit diesen Nachrichten ist, dass sie nicht das Gefühl mitteilen, dass Ihre Website gerade aktualisiert wurde oder dass Sie das sehr oft tun. Es ist also sicherlich einladender und viel klarer, die Zeit auf diese Weise zu präsentieren:
vor 2 Minuten veröffentlichtschon oft gesehen? Aber wie viele von Ihnen haben dies in Ihre Projekte aufgebaut? Nehmen Sie Facebook zum Beispiel: Wie würde es aussehen, wenn sie die Daten für den neuesten Inhalt wie in meinem ersten Beispiel präsentieren würden? Vergleichen Sie die linken und rechten Spalten im folgenden Bild:
Die Daten der linken Spalte sind nicht so attraktiv, oder? Ich werde die rechten Beispiele einsetzen, die Ihnen ansprechender sind. Zu wissen, dass der Inhalt frisch ist, ist sehr wichtig - insbesondere in den sozialen Netzwerken, in denen Menschen in den alten oder nicht eindeutigen Zeitstempel ignorieren.
.Um bessere Daten
zu präsentieren, benötigen Sie ein serverseitiges Skript, und ich werde PHP für diese Demo verwenden. Ich habe eine winzige Funktion namens time_ago () erstellt, wie hier gezeigt:<span><span><?php </span></span><span> </span><span> <span>define( TIMEBEFORE_NOW, 'now' ); </span></span><span> <span>define( TIMEBEFORE_MINUTE, '{num} minute ago' ); </span></span><span> <span>define( TIMEBEFORE_MINUTES, '{num} minutes ago' ); </span></span><span> <span>define( TIMEBEFORE_HOUR, '{num} hour ago' ); </span></span><span> <span>define( TIMEBEFORE_HOURS, '{num} hours ago' ); </span></span><span> <span>define( TIMEBEFORE_YESTERDAY, 'yesterday' ); </span></span><span> <span>define( TIMEBEFORE_FORMAT, '%e %b' ); </span></span><span> <span>define( TIMEBEFORE_FORMAT_YEAR, '%e %b, %Y' ); </span></span><span> </span><span> <span>function time_ago( $time ) </span></span><span> <span>{ </span></span><span> <span>$out = ''; // what we will print out </span></span><span> <span>$now = time(); // current time </span></span><span> <span>$diff = $now - $time; // difference between the current and the provided dates </span></span><span> </span><span> <span>if( $diff < 60 ) // it happened now </span></span><span> <span>return TIMEBEFORE_NOW; </span></span><span> </span><span> <span>elseif( $diff < 3600 ) // it happened X minutes ago </span></span><span> <span>return str_replace( '{num}', ( $out = round( $diff / 60 ) ), $out == 1 ? TIMEBEFORE_MINUTE : TIMEBEFORE_MINUTES ); </span></span><span> </span><span> <span>elseif( $diff < 3600 * 24 ) // it happened X hours ago </span></span><span> <span>return str_replace( '{num}', ( $out = round( $diff / 3600 ) ), $out == 1 ? TIMEBEFORE_HOUR : TIMEBEFORE_HOURS ); </span></span><span> </span><span> <span>elseif( $diff < 3600 * 24 * 2 ) // it happened yesterday </span></span><span> <span>return TIMEBEFORE_YESTERDAY; </span></span><span> </span><span> <span>else // falling back on a usual date format as it happened later than yesterday </span></span><span> <span>return strftime( date( 'Y', $time ) == date( 'Y' ) ? TIMEBEFORE_FORMAT : TIMEBEFORE_FORMAT_YEAR, $time ); </span></span><span> <span>} </span></span><span> </span><span><span>?></span></span>
schauen wir uns einige Details dieses Code an.
Zum Beispiel, wenn Sie dies auf Ihre WordPress -Site bringen möchten, schreiben Sie einfach Folgendes:
<span><span><?=time_ago( get_the_time( 'U' ) )?></span></span>
oder wenn es sich um ein anderes hypothetisches CMS handelte:
<?=time_ago( $post->date_created )?>
oder der statische Weg:
<?=time_ago( 1447571705 )?>
Es gibt ein spezifisches HTML -Element, das Sie zum Präsentieren von Daten verwenden sollten: gestern oder vor 3 Minuten
). Daher sollten Sie auch einen Fallback -Wert angeben, indem Sie ein [DateTime] -attribut verwenden:Published <time datetime="<?=date( 'Y-m-d', $time )?>" title="<?=strftime( date( 'Y', $time ) == date( 'Y' ) ? TIMEBEFORE_FORMAT : TIMEBEFORE_FORMAT_YEAR, $time )?>"> <?=time_ago( $time )?> </time>
Dies würde zu einer besseren Zugänglichkeit führen, zum Beispiel:
Published <time datetime="2015-09-12" title="September 12">3 minutes ago</time>
Hast du das [Titel] Attribut entdeckt? Es ist eine winzige Verbesserung der Benutzerfreundlichkeit: Wenn Sie den Cursor über den Datum einsetzen, zeigt eine Meldung im Titelattribut angezeigt. Das gilt für die Benutzer, die aus irgendeinem Grund nach den "echten" Daten suchten. Hier ist ein kleiner CSS -Trick, um das Gefühl zu verbessern, dass es etwas mehr gibt:
<span>time<span><span>[title]</span></span> </span><span>{ </span> <span>cursor: help; </span><span>}</span>
Es gibt noch eine Sache, die wir tun können! Haben Sie bemerkt, dass Facebook auch die Daten in Echtzeit erhöht? Beobachten Sie einfach 3 Minuten für eine Minute und es wird 4 Minuten und so weiter. Es gibt also Arten von Websites, die dies als eine wirklich schöne Verbesserung gilt. Es wäre nicht nützlich in einem Artikelbeitrag wie diesem, aber es ist perfekt auf einer Website wie Readerrr:
perfekt<span><span><?php </span></span><span> </span><span> <span>define( TIMEBEFORE_NOW, 'now' ); </span></span><span> <span>define( TIMEBEFORE_MINUTE, '{num} minute ago' ); </span></span><span> <span>define( TIMEBEFORE_MINUTES, '{num} minutes ago' ); </span></span><span> <span>define( TIMEBEFORE_HOUR, '{num} hour ago' ); </span></span><span> <span>define( TIMEBEFORE_HOURS, '{num} hours ago' ); </span></span><span> <span>define( TIMEBEFORE_YESTERDAY, 'yesterday' ); </span></span><span> <span>define( TIMEBEFORE_FORMAT, '%e %b' ); </span></span><span> <span>define( TIMEBEFORE_FORMAT_YEAR, '%e %b, %Y' ); </span></span><span> </span><span> <span>function time_ago( $time ) </span></span><span> <span>{ </span></span><span> <span>$out = ''; // what we will print out </span></span><span> <span>$now = time(); // current time </span></span><span> <span>$diff = $now - $time; // difference between the current and the provided dates </span></span><span> </span><span> <span>if( $diff < 60 ) // it happened now </span></span><span> <span>return TIMEBEFORE_NOW; </span></span><span> </span><span> <span>elseif( $diff < 3600 ) // it happened X minutes ago </span></span><span> <span>return str_replace( '{num}', ( $out = round( $diff / 60 ) ), $out == 1 ? TIMEBEFORE_MINUTE : TIMEBEFORE_MINUTES ); </span></span><span> </span><span> <span>elseif( $diff < 3600 * 24 ) // it happened X hours ago </span></span><span> <span>return str_replace( '{num}', ( $out = round( $diff / 3600 ) ), $out == 1 ? TIMEBEFORE_HOUR : TIMEBEFORE_HOURS ); </span></span><span> </span><span> <span>elseif( $diff < 3600 * 24 * 2 ) // it happened yesterday </span></span><span> <span>return TIMEBEFORE_YESTERDAY; </span></span><span> </span><span> <span>else // falling back on a usual date format as it happened later than yesterday </span></span><span> <span>return strftime( date( 'Y', $time ) == date( 'Y' ) ? TIMEBEFORE_FORMAT : TIMEBEFORE_FORMAT_YEAR, $time ); </span></span><span> <span>} </span></span><span> </span><span><span>?></span></span>
Schließlich müssen wir den PHP -Code in ein JavaScript -Äquivalent konvertieren. Ich habe dies für Sie in Vanilla JS getan (obwohl auch eine Jquery -Version verfügbar ist). Das Skript geht jedes Mal durch jede Minute durch (setTimeout (aktualisiert, 1000 * 60)) und aktualisiert die Werte:
<span><span><?=time_ago( get_the_time( 'U' ) )?></span></span>
Sie können sich eine Online -Demo des obigen Code ansehen oder den vollständigen Demo -Code herunterladen.
In den obigen Beispielen wird das volle Datum vorgestellt, wenn die Aktivität vor drei oder mehr Tagen aufgetreten ist. Aber es ist ziemlich einfach, das Skript zu verlängern, um die Zeit in den Wegen wie vor 5 Tagen, vor 2 Wochen und vor 1 Monat und so weiter zu präsentieren:
<?=time_ago( $post->date_created )?>
Benutzererfahrung und Zufriedenheit sind im Detail. Manchmal reicht ein einfaches Detail - wie ein dynamisches Datumsformat - aus, um unsere Websites ein bisschen besser zu machen.
Was halten Sie von dieser Lösung? Würden Sie in Betracht ziehen, es für Ihr nächstes Projekt zu verwenden? Haben Sie Fragen dazu? Bitte lassen Sie es mich in den Kommentaren wissen.
Ich hoffe, jemand kann Instagram -Leute sagen, dass 122W nicht cool ist und dass 2,4 Jahre viel einfacher zu verstehen sind. Das wäre besser, nicht wahr?
Das obige ist der detaillierte Inhalt vonVorzeit: So zeigen Sie Veröffentlichungstermine als Zeit, die seitdem veröffentlicht werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!