Aktuelle Zeit hier im Forum

Fragen und Anregungen zum Forum.
Beiträge die Community betreffend
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Aktuelle Zeit hier im Forum

Beitrag von Micha122 »

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Sollte mal umgestellt werden. Verwirrt ein wenig wenn da heute schon "gestern" steht.
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Aktuelle Zeit hier im Forum

Beitrag von RSBasic »

Einstellung musst du selber ändern: Persönlicher Bereich > Einstellungen > Persönliche Einstellungen > Derzeit ist Sommerzeit: > Nein
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: Aktuelle Zeit hier im Forum

Beitrag von Micha122 »

RSBasic hat geschrieben:Einstellung musst du selber ändern: Persönlicher Bereich > Einstellungen > Persönliche Einstellungen > Derzeit ist Sommerzeit: > Nein
Ich lese hier immer als "Gast". Da habe ich keinen persönlichen Bereich.

Gruß
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Aktuelle Zeit hier im Forum

Beitrag von Sicro »

Die Einstellung für Gäste muss ein Admin anpassen. An den Forum-Einstellungen wird aber so gut wie nie etwas geändert.

Mein erster Gedanke war ein Script für Greasemonkey, das die Datum/Zeit anpasst.
Und da ich noch nie ein Script dafür geschrieben habe, hatte ich gerade Lust drauf :)

Code als Datei "Time_Corrector_for_Pure-Board.user.js" speichern und in Greasemonkey einfügen:

Code: Alles auswählen

// ==UserScript==
// @name        Date/Time Corrector for Pure-Board
// @namespace   http://www.mybits-home.de
// @description Korrektiert die Datum/Zeit-Angaben im Pure-Board.
// @include     http://www.purebasic.fr/german/*
// @include     http://purebasic.fr/german/*
// @version     2.0.0
// @grant       none
// ==/UserScript==

// ----------------------------------------
// Korrigierte Datum/Zeit wird mit Sternchen-Zeichen am Ende gekennzeichnet
// ----------------------------------------

// Setzt eine Null vor die Zahl, wenn diese nur einstellig ist
function formatDate(day, month, year, hours, minutes) {
  if (day < 10)         day = '0' + day;
  if (month < 10)     month = '0' + month;
  if (hours < 10)     hours = '0' + hours;
  if (minutes < 10) minutes = '0' + minutes;

  switch (hours) {
    case '0-2':
      return day + '\.' + month + '\.' + year; // für Regulärer Ausdruck
      break;
    case '0-1':
      return day + '.' + month + '.' + year;
      break;
    default:
      return day + '.' + month + '.' + year + ' ' + hours + ':' + minutes;
  }
}

// Reguläre Ausdrücke definieren
var regex_date_time            = /(\d{2})\.(\d{2})\.(\d{4}) (\d{2}):(\d{2})/;
var regex_today_yesterday_time = /(Gestern|Heute) (\d+):(\d{2})/;

// Datum/Uhrzeit vom Forum ermitteln und zerlegen
var datetext  = document.getElementsByTagName('td')[7].firstChild.nodeValue.replace(/Aktuelle Zeit: /, '');
var Result = regex_date_time.exec(datetext);
var day       = Result[1];
var month     = Result[2];
var year      = Result[3];
var hours     = Result[4];
var minutes   = Result[5];

// Abweichung Forum-Datum/Zeit <> Aktuell-Datum/Zeit berechnen
var now_date   = new Date();
var forum_date = new Date(year, month-1, day, hours, minutes, now_date.getSeconds());
var offset     = now_date.getTime() - forum_date.getTime();

// Regläre Ausdrücke für Datum von heute und gestern definieren (aktuelles Datum)
var today_date_regexp = new RegExp(formatDate(now_date.getDate(), now_date.getMonth()+1, now_date.getFullYear(), -2, -2));
var temp_date = new Date(now_date.getTime() - 1000*60*60*24);
var yesterday_date_regexp = new RegExp(formatDate(temp_date.getDate(), temp_date.getMonth()+1, temp_date.getFullYear(), -2, -2));

// Datum/Zeit evtl. korrigieren
if (offset != 0) {
  // Aktuelles Forum-Datum/Uhrzeit korrigieren
  document.getElementsByTagName('td')[7].firstChild.nodeValue = 'Aktuelle Zeit: ' +
    formatDate(now_date.getDate(), now_date.getMonth()+1, now_date.getFullYear(), now_date.getHours(), now_date.getMinutes()) + '*';

  // Datum/Uhrzeit bei den Beträgen korrigieren
  var items = document.getElementsByTagName('*');
  for (var i = 0; i < items.length; i++) {
    var item_value = '';

    switch (items[i].nodeName) {
      case 'P': // Datum/Uhrzeit der letzten Beiträge in der Threads-Übersicht auslesen
        if (items[i].firstChild.nodeType != 3) continue; // Nur Textknoten
        item_value = items[i].firstChild.nodeValue;
        break;
      case 'DIV': // Datum/Uhrzeit bei den Beiträgen auslesen
        if (items[i].lastChild.nodeType != 3) continue; // Nur Textknoten
        item_value = items[i].lastChild.nodeValue;
    }

    // "Heute" und "Gestern" zu Datumangaben ersetzen
    Result = regex_today_yesterday_time.exec(item_value);
    if (Result != null) {
      switch (Result[1]) {
        case 'Gestern':
          temp_date = new Date(forum_date.getTime() - 1000*60*60*24);
          item_value = item_value.replace(/Gestern/, formatDate(temp_date.getDate(), temp_date.getMonth()+1, temp_date.getFullYear(), -1, -1));
          break;
        case 'Heute':
          item_value = item_value.replace(/Heute/, formatDate(forum_date.getDate(), forum_date.getMonth()+1, forum_date.getFullYear(), -1, -1));
      }
    }

    // Nur bei gültigem Datum-Format weitermachen
    Result = regex_date_time.exec(item_value);
    if (Result == null) continue;

    day       = Result[1];
    month     = Result[2];
    year      = Result[3];
    hours     = Result[4];
    minutes   = Result[5];

    // Datum/Zeit um die Abweichung korrigieren
    var post_date = new Date(year, month-1, day, hours, minutes, now_date.getSeconds());
    post_date.setTime(post_date.getTime() + offset);
    item_value = formatDate(post_date.getDate(), post_date.getMonth()+1, post_date.getFullYear(), post_date.getHours(), post_date.getMinutes());

    // Datum für heute und gestern wieder zu "Heute" und "Gestern" ersetzen
    item_value = item_value.replace(today_date_regexp, 'Heute');
    item_value = item_value.replace(yesterday_date_regexp, 'Gestern');

    switch (items[i].nodeName) {
      case 'P': // Datum/Uhrzeit der letzten Beiträge in der Threads-Übersicht korrigieren
        items[i].firstChild.nodeValue = item_value + '*';
        break;
      case 'DIV': // Datum/Uhrzeit bei den Beiträgen korrigieren
        items[i].lastChild.nodeValue = ' ' + item_value + '* ';
    }
  }
}
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Antworten