Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-11-2005, 21:57   #1 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Post Snippet: Datumsumwandlung

Hi,

ich enwickle gerade eine Applikation und bin mir noch nicht sicher, ob mein Webserver bis zum Release auf MySQL 5 umgestellt wird (jetzt V4). Mein Problem war das unterschiedliche Timestamp-Format. Um das Problem möglichst geschickt zu umgehen habe ich eine kleine Funktion geschrieben, die die Geschichte dynamisch verwaltet.

Vielleicht kann es ja jemand gebrauchen

PHP-Code:
// Vergleichsfunktion für Ähnlichkeit
function like(sHaystack:StringsPattern:String):Boolean 
{
    
sHaystack sHaystack.toLowerCase();
    
sPattern sPattern.toLowerCase();
    var 
sHaystackArray:Array = sHaystack.split(sPattern2);
    if (
sHaystackArray.length 1)
        return 
true;
    else return 
false;
}

// Funktion Suchen und Ersetzen
function replace (sString:StringrString:StringsHaystack:String):String
{
    var 
sHaystackArray:Array = sHaystack.split(sString);
    return 
sHaystackArray.join (rString);
}

// Die Umwandlungsfunktion
function dateConv (dateFormat:StringdateConvFormat:StringdateIn:String):String 
{
    var 
tags = new Array("y""m""d""h""i""s");
    var 
date:Object = new Object({y:""m:""d:""h:""i:""s:""});
    var 
dateOut:String dateConvFormat;
    
    
// Alle verwendeten Tags ermitteln
    
for (var i in tags)
        if (!
like (dateFormattags[i]))
            
tags.splice (i1);
    
    for (var 
i in tags)
    {
        
date[tags[i]] = dateIn.substring (dateFormat.indexOf (tags[i]), dateFormat.lastIndexOf (tags[i])+1)
        
dateOut replace (tags[i], date[tags[i]], dateOut);
    }
    
    return 
dateOut;

Anwendung:
PHP-Code:
// Timestamp Format in MySQL 5
myDate1 dateConv("yyyy-mm-dd hh:ii:ss""d.m.y (h:i:s)""2005-11-21 15:07:56");

// Timestamp Format in MySQL 4
myDate2 dateConv("yyyymmddhhiiss""d.m.y (h:i)""20051224201500");

trace (myDate1); //Ausgabe: 21.11.2005 (15:07:56)
trace (myDate2); //Ausgabe: 24.12.2005 (20:15) 
1. Anmerkung: Ich glaube der Code und dessen Anwendung muss nicht genauer erläuert werden - selbsterklärend. Aber Fragen ist nicht verboten

2. Anmerkung: Die Funktionen like und replace sind aus meiner pers. Snippetsammlung. Ich habe sie genommen, damit es übersichtlich bleibt. Man kann das Ganze natürlich auch in einer einzigen Funktion lösen.

3. Anmerkung: Für meine Zwecke reicht das aus und ich werde es deswegen nicht erweitern. Aber ich würde mich natürlich über Modifikationen, Lob und Kritik freuen.

Grüße,
Vampire's Party
__________________
Blog

Geändert von Vampire's Party (22-11-2005 um 22:00 Uhr)
Vampire's Party ist offline   Mit Zitat antworten
Alt 22-11-2005, 22:06   #2 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 283
Warum sollte man das Datum denn schon formatiert speichern, wenn die speicherung eines simplen timestamps doch immer funktioniert?
__________________
ein mensch ohne macke ist kacke...
DaKinel ist offline   Mit Zitat antworten
Alt 22-11-2005, 22:17   #3 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Es geht nicht um die Speicherung, sondern um das Auslesen des TS aus der DB.
__________________
Blog
Vampire's Party ist offline   Mit Zitat antworten
Alt 22-11-2005, 22:20   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 283
Nun ja was soll man denn bei dem Auslesen eines Zeitstempels (Sekunden seit irgendwann 1970) falsch machen. Das Formatieren des Datums kann ja nach dem Auslesen gemacht werden
__________________
ein mensch ohne macke ist kacke...
DaKinel ist offline   Mit Zitat antworten
Alt 22-11-2005, 22:24   #5 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Zitat:
Zitat von DaKinel
Das Formatieren des Datums kann ja nach dem Auslesen gemacht werden
Das macht das Script ja... oder reden wir aneinander vorbei
__________________
Blog
Vampire's Party ist offline   Mit Zitat antworten
Alt 22-11-2005, 22:38   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 283
Also ein Zeitstempel ist bei mir die Rückgabe der Funtionen time() und mktime(). Dieser Stempel stellt die Sekunden dar die seit irgendeinem Datum 1970 vergangen sind. Da dieser Zeitstempel einfach nur eine Zahl darstellt, lässt er sich auch wunderbar in einer Datenbank ablegen und ntürlich auch wieder auslesen. Um nun aus dem Zeitstempel einen lesbaren String zu erzeugen, muss nur ein kurzer aufruf an die Funktion date('d.m.Y (H:i)', $zeitstempel) gemacht werden und schon erhält man den gewünschten String ohne sich Gedanken über irgendeine Datenbankversion machen zu müssen.
__________________
ein mensch ohne macke ist kacke...
DaKinel ist offline   Mit Zitat antworten
Alt 22-11-2005, 22:44   #7 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Ahh, OK..

Ich habe gar nicht von PHP geredet, sondern von MySQL. Also wenn man ein Datenfeld vom Typ timestamp hat.

Wenn man über PHP einen neuen Datensatz einfügt:

Code:
INSERT INTO table ( datum ) VALUES ( NOW() )
In datum wird dann die Serverzeit in einem bestimmten Format eingefügt (siehe Anwendung).
__________________
Blog
Vampire's Party ist offline   Mit Zitat antworten
Alt 23-11-2005, 07:57   #8 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Da kann ich Vampire nur zustimmen... die Timestamps von PHP und MySQL haben ausser dem Namen nicht viel gemein! PHP errechnet einen Timestamp aus der Zeitspanne zwischen dem (schon so viel angesprochenen) Datum um 1970 herum und dem gewünschten Datum. MySQL allerdings speichert seinen Timestamp im Format "JJJJMMDDhhmmss"!
Eine Umwandlung per date() würde also irgendwas komisches ausgeben. So gesehen, muss man aufpassen, ob man einen PHP-TS einfach in ne int-Spalte speichert oder aber ein Datum in MySQL per MySQL-TS speichern lässt.
Wobei ich empfehlen würde, das Datum in MySQL als Datumsspalte zu speichern und anschliessend die Ausrechnungen von MySQL ausführen zu lassen (ist ein bisschen schneller als PHP ).
Per
PHP-Code:
SELECT TIMESTAMP(datum) ... 
kriegst du dann nen schönen PHP-TS geliefert
oder aber per
PHP-Code:
... DATE_FORMAT(datumformate) ... 
kannst du das Datum entsprechend ummodeln und dann ausgeben lassen...

So, ich hoffe, ich habe jetzt keinen Quatsch erzählt!
__________________
There is no way to happiness, happiness is the way! - Buddha

Geändert von bamboocha (23-11-2005 um 08:00 Uhr)
bamboocha ist offline   Mit Zitat antworten
Alt 23-11-2005, 08:36   #9 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 283
Zitat:
Zitat von bamboocha
...ist ein bisschen schneller als PHP ...
Das wage ich zu bezweifeln...
__________________
ein mensch ohne macke ist kacke...
DaKinel ist offline   Mit Zitat antworten
Alt 08-12-2005, 07:20   #10 (permalink)
Neuer User
 
Benutzerbild von K-Grabowski
 
Registriert seit: Jan 2003
Ort: Arminia!!!! Bielefeld
Beiträge: 1.138
hab noch ne kleine optimierung für die ersten 2 Funktionen:

PHP-Code:
function like(sHaystack:StringsPattern:String):Boolean {
    if (
sHaystack.toLowerCase().indexOf(sPattern.toLowerCase()) != -1) {
        return 
true;
    }
    return 
false;
}

// Funktion Suchen und Ersetzen
function replace (sString:StringrString:StringsHaystack:String):String
{
    return 
sHaystack.split(sString).join (rString);

__________________
Wieviel hätte ich also für dieses Fahrzeug zu investieren???
K-Grabowski ist offline   Mit Zitat antworten
Alt 08-12-2005, 09:17   #11 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Hi,

Danke! Hatte die Optimierung auch schon vorgenommen allerdings vergessen, sie hier zu aktualisieren.

__________________
Blog
Vampire's Party ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 05:46 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele