Hallo, ich bin gerade dabei, ein Plugin zu erstellen, um die vergangene Zeit zu berechnen. Aktuell funktioniert es so, das ich im backend das Startdatum eingebe und dann die vergangenen Tage errechnet und über eine Shortcode auf der Seite ausgeben werden. Sobald ich noch gern die Stunden und Minuten mit ausgeben möchte, wird es falsch dargestellt.
Es gibt eine php und js Datei. Hier mal die beiden, vieleicht weiß wer von euch, wie ich es hinbekomme. Danke
PHP
<?php
// Plugin-Konstanten
define( 'LOVETIME_VERSION', '1.0' );
define( 'LOVETIME_DB_VERSION', '1.0' );
// Plugin-Initialisierung
function lovetime_init() {
// Plugin-Optionen registrieren
register_setting( 'lovetime', 'lovetime_start_date' );
// Plugin-Menü hinzufügen
add_action( 'admin_menu', 'lovetime_admin_menu' );
// Shortcode hinzufügen
add_shortcode( 'lovetime', 'lovetime_shortcode' );
}
add_action( 'plugins_loaded', 'lovetime_init' );
// Plugin-Menü
function lovetime_admin_menu() {
add_menu_page(
'Lovetime',
'Lovetime',
'manage_options',
'lovetime',
'lovetime_admin_page'
);
}
// Plugin-Admin-Seite
function lovetime_admin_page() {
?>
<div class="wrap">
<h1>Lovetime</h1>
<form method="post" action="options.php">
<?php settings_fields( 'lovetime' ); ?>
<table class="form-table">
<tr>
<th><label for="lovetime_start_date">Startdatum:</label></th>
<td><input type="date" name="lovetime_start_date" id="lovetime_start_date" value="<?php echo esc_attr( get_option( 'lovetime_start_date' ) ); ?>" /></td>
</tr>
</table>
<?php submit_button(); ?>
</form>
</div>
<?php
}
// Shortcode-Funktion
function lovetime_shortcode() {
// Startdatum abrufen
$start_date_str = get_option( 'lovetime_start_date' );
// Startdatum in DateTime-Objekt konvertieren
try {
$start_date = new DateTime( $start_date_str );
} catch ( Exception $e ) {
// Fehlermeldung ausgeben
return 'Ungültiges Startdatum: ' . $e->getMessage();
}
// Aktuelle Zeit abrufen
$current_time = time();
// Zeitdifferenz berechnen
$time_diff = $current_time - $start_date->getTimestamp();
// Anzahl der Tage
$days = floor( $time_diff / 86400 );
// Rest der Zeitdifferenz (Sekunden)
$remaining_time = $time_diff % 86400;
// Stunden berechnen
$hours = floor( $remaining_time / 3600 );
// Ausgabe der Zeitdifferenz
return sprintf(
'%d Tage, %d Stunden',
$days,
$hours
);
}
?>
Alles anzeigen
Und hier der Js Code.
Code
(function($) {
// Funktion zum Aktualisieren der Zeitdifferenz in Echtzeit
function updateLovetime() {
// Aktuelle Zeit abrufen
var current_time = Math.floor(Date.now() / 1000);
// Startdatum abrufen
var start_date = $('input#lovetime_start_date').val();
// Zeitdifferenz berechnen
var time_diff = current_time - start_date;
// Zeitdifferenz in Tagen, Stunden und Sekunden formatieren
var days = Math.floor(time_diff / 86400);
var hours = Math.floor((time_diff % 86400) / 3600);
var seconds = time_diff % 3600;
// Ausgabe der Zeitdifferenz aktualisieren
$('.lovetime-output').text(days + ' Tage, ' + hours + ' Stunden, ' + seconds + ' Sekunden');
}
// Aktualisierung der Zeitdifferenz alle 10 Sekunden
setInterval(updateLovetime, 10000);
})(jQuery);
Alles anzeigen