Timestamp in ASP?

Bicko

Erfahrenes Mitglied
Hi,

suche nun schon seit Tagen, wie man einen Timestamp in ASP erzeugt. Gibt es den Begriff an sich denn nicht? time() gibt mir ja nur die Uhrzeit, ich brauche aber einen richtigen Timestamp.

Dann moechte ich gerne noch einen String umwandeln.

z.B 34 in 3-4
oder 34g soll dann 3-4-g

Es soll also immer ein Zeichen und dann ein - eingefuegt werden. Nach dem letzen Zeichen aber natuerlich nicht. User koennen ja nun wirklich das Ganze unterschiedlich eingeben, der naechste schreibt vielleicht 3.4. oder 3`4

Es soll aber definitiv mit Bindestrich geschrieben werden. Wie bastelt man den so etwas am Einfachsten?

Wie in meinem anderen Post bereits gesagt, verstehe ich immer noch nicht das For each Element in request.form.

Habe eine Funktion gefunden, mit der ich saemtlich HTML Code rausfiltern kann, aber wie uebergibt man den alle Formular Felder an diese Funktion und bekommt die dann auch wieder zurueck

Ich hoffe der eine oder andere hat ein paar Tips fuer meine Probleme. Vielen Dank im voraus.

Gruss Bicko
 

Chrisu

Erfahrenes Mitglied
Moinsen,

dann will ich mal schnell ein paar Antworten geben:

1.) anstatt der time()-Funktion versuch mal die now()-Funktion. Die liefert dier Datum und Uhrzeit. Das sollte eigentlich sein was du suchst.

2.) da gibt es sicher mehrere Mögliichkeiten:
a) Möglichkeit 1:
- deinen Wert in einen String umwandeln (macht aber ASP von sich aus)
- mit for-next Schleifen und den String-Funktionen Left, Right, Mid, Len arbeiten.
und damit sozusagen den String zerlegen, Zeichen einfügen und nächster Schritt.
b) Möglichkeit 2:
Such mal im Internet (oder unter http://www.aspheute.com) noch Regulären Ausdrücken (Regular Expressions). Damit kann man auch einiges machen. Ich hab jetzt zwar kein Beispiel parat, aber damit funktionierts auch.

3.) Ja diesen Punkt hab ich in deinem anderen Posting auch schon nicht verstanden ;-) Also, du scheinst ja schon die for each - next Anweisung gefunden zu haben. Damit kannst du alle Formularfelder auslesen. Soweit alles OK. Und zu deiner Frage mit dem Übergeben der Werte?! Naja, das sollte nicht das Problem sein. Das mußt du nicht selber machen, sondern das übernimmt der Browser für dich. Du musst dem Formular nur sagen, welche ASP-Seite aufgerufen wird. Am schlauesten wäre natürlich die Seite mit den Formularfeldern. Und dort bearbeitest du ganz am Anfang der Datei deine Formulardaten. Weitere Informationen zu dieser Frage schreib ich noch im anderen Posting.

Ich hoffe, das hilft dir ein wenig weiter.
So long,
Chrisu
 

Bicko

Erfahrenes Mitglied
Hi Chrisu,
erstmal Danke fuer Deine Hilfe. Okay zu Punkt:

1. Der UNIX-Timestamp ist ja so definiert... "dieser beinhaltet die Anzahl der Sekunden seit dem 1.1.1970 um 00:00 Uhr." Genau diesen Wert suche ich. Gibt es das nicht in ASP? Kann man das sonst irgendwie selbst bauen? Es muss doch eine Funktion dafuer geben oder nicht?

2. Mit der For Next Schleife... wie koennte das denn aussehen? Ungefaehr so?

MeinString=request.form("string")
z.B 3 3 2
oder 3.3.2
oder 3/3/2
Code:
For i=0 to len(MeinString)
'tja und was mache ich hier damit
' ich am Ende ein 3-3-2 habe?
Next

3. Das ist ein echtes Problem fuer mich. Wie geschrieben moechte ich gerne eine Fehlerueberpruefung haben, die mir einfach alle Felder eines Formulares durchlaeuft.
Ich habe jetzt eine RegEx gefunden, um HTML Code rauszufiltern. Nun moechte ich ja nicht fuer jedes einzelne Formularfeld die Funktion aufrufen, den String uebergeben und am Ende wieder auswerten, sondern das Ganze soll automatisch durchlaufen fuer alle Formularfelder.

Hier ein Beispiel:

Code:
strHTML=request.Form("Betreff")
Call ClearHTMLTags(strHTML)
JobTitle=ClearHTMLTags(strHTML)

Das muesste ich dann ja fuer jedes Formularfeld einzeln machen, da gibt es doch bestimmt eine Loesung. Also dachte ich an die For each... aber muss ich da irgendwo Feldnamen oder den Formnamen angeben? Wie ist die genaue Syntax?

Nochmal vielen Dank fuer Deine Hilfe.
 

Bicko

Erfahrenes Mitglied
So habe fuer das 2. Problem schon mal eine Teilloesung gefunden.

Code:
text= ReplaceCharacters(trim(Request.Form("text")))
response.write text


Function ReplaceCharacters(text) 
Dim badChars, newChars, i
'create our array of bad words
badChars = array(".", " ") 
newChars = text
for i = 0 to uBound(badChars) 
newChars = Replace(newChars, badChars(i), "-") 
Next 
ReplaceCharacters = newChars 
End function


So damit kann ich dann unterschiedliche Zeichen rausfiltern. Doch was mache ich hiermit?
334 das soll ja auch noch umgewandelt werden in 3-3-4.

Mmh also nur eine Teilloesung. Hat jemand eine Idee? Meine anderen beiden Probleme sind uebrigens immer noch da..
 

Chrisu

Erfahrenes Mitglied
Moinsen,

dann ersetz halt nicht die ungültigen Zeichen mit "-" sondern mit "". Sozusagen die ungültigen Zeichen löschen. Und dann musst du nur noch nach jedem zeichen ein "-" einfügen. Wie ich schon geschrieben hab funktioniert sowas mit den Stringfunktionen. Aber anscheinend hast du dir die Seite ASPheute.de nicht sorgfältig angeschaut. Naja, dann schreib ich mal das kurz auf:

Code:
StrLen = len(MeinString)
for i=1 to (StrLen-1)
    NeuerString = NeuerString & Left(MeinString,1) & "-"
    MeinString = Right(MeinString, StrLen-i)
Next
NeuerString = NeuerString & MeinString

So, hab ich zwar jetzt nicht getestet, aber sollte so funktionieren. Das Prinzip ist recht einfach:
Von deinem String nimmst du das erste Zeichen von der linken Seite und fügst dann gleich noch ein "-" hinzu. Und dein ursprünglicher String wird jetzt einfach um dieses Zeichen gekürzt. Und das wiederholst du solange bis der String durch ist.

Eine Bitte an dich. Lies dir die Seiten von ASPheute durch. Die sind echt gut gemacht und man kann echt viel davon lernen. Und du solltest schleunigst die Grundlagen von ASP nachholen. Also Stringoperationen wie Left, und Right gehören zu den Standardfunktionen und werden auch sehr oft benötigt. Nichts für ungut, aber das ist echt wichtig.

Schöne Grüße,
Chrisu
 

Bicko

Erfahrenes Mitglied
Hi Chrisu,

vielen Dank fuer Deine Hilfe. Das hat super geklappt. Ich habe mir schon viele Sachen durchgelesen, auch auf aspheute.com. Leider fehlt mir aber eine wenig Uebung, diese Befehle auch richtig umzusetzen. Das kommt wohl erst mit der Erfahrung und muss sich muehsam erarbeitet werden...

Ich habe Deine Loesung nun versucht fuer meinen 2. Wert einzusetzen. Hierbei handelt es sich um Telefonnummer. Leider weiss ich aber nicht genau, wie lang diese Nummern sein werden. Nach 3 Zeichen soll ein Leerzeichen eingebaut werden.

Code:
MeinString=MobilePhone

StrLen = len(MeinString)
j=3
for i=1 to(StrLen-3) 
    NeuerString = NeuerString & Left(MeinString,3) & " "
    MeinString = Right(MeinString, StrLen-j)
	j=j+3
	i=i+3
Next
NeuerString = NeuerString & MeinString
MobilePhone=NeuerString

Normalerweise haben die Nummer 9 Zeichen, mit meiner Loesung klappt das auch wunderbar. Nur bei 7 Nummern sieht das Format so aus xxx xxxx.

Habe schon viel probiert bekomme es aber nicht geloest, das es so aussieht xxx xxx x

Seltsam, ich dachte eigentlich das ich die Loesung komplett verstehe.

Auch fuer mein Problem Nr. 1 habe ich eine Loesung gefunden:

Code:
TimeStamp = DateDiff("s", CDate(#01/01/1970#), Now)

Ich glaube, das das den richtigen Timestamp ergibt oder liege ich da falsch

Nun fehlt nur noch Problem 3 mit dem dynamischen durchsuchen aller Formularfelder nach HTML Code...

Nochmal vielen Dank fuer Deine Hilfe.

Gruss Bicko
 

Luzie

Erfahrenes Mitglied
Bicko hat gesagt.:
Normalerweise haben die Nummer 9 Zeichen, mit meiner Loesung klappt das auch wunderbar. Nur bei 7 Nummern sieht das Format so aus xxx xxxx.

Habe schon viel probiert bekomme es aber nicht geloest, das es so aussieht xxx xxx x
Gruss Bicko

Hi

kannst Du auch mit einem Regulären Ausdruck machen

bsp.

Code:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Set expr = new regexp
expr.Pattern = "(.{3})"
expr.IgnoreCase = True
expr.Global = True

dim str, expr_result
Str = "0301234"
expr_result = expr.Replace(Str,"$1 ")
set expr = nothing

response.write expr_result
%>
 
Zuletzt bearbeitet:

Chrisu

Erfahrenes Mitglied
Hallo Bicko,

ich wollte dir auf keinen Fall zu nahe treten. Und klar, der sichere Umgang mit den Funktionen und Tricks kommt mit der Zeit und der Übung. Trotzdem sollte man sich einfach alle Informationen gut ansehen. Und auf den Seiten ASPheute.de steht eigentlich alles um erfolgreich ASP-Seiten zu programmieren. Und die Stringfunktionen gehören beim Programmieren mit Sicherheit zu den wichtigsten überhaupt.

Zu deinem Problem mit der Telefonnummernformatierung kann ich dir auch wie Luzie nur die regülären Audrücke wärmstens empfehlen. Mit RegExp kann man richtig viel machen. Das ist ein sehr mächtiges Werkzeug für uns Programmierer. Es sieht auf den ersten Moment vielleciht etwas verwirrend aus, aber wenn man das ganze einmal durchschaut hat, möchte man darauf nicht mehr verzichten. Eine gute Seite zu dem Thema hab ich gerade nicht zur Hand, aber Google hilft hier sicher weiter.

Das mit dem TimeStamp sieht so aus als ob es richtig funktionieren müsste. Ich habs nicht ausprobiert aber im Grunde scheint es richtig zu sein. Was ich bis jetzt noch nicht verstanden habe ist, wofür du so einen TimeStamp brauchst. Für einen Nutzer ist die Angabe in der Form von Sekunden seit 1900 nicht wirklich lesbar. Und intern wird jeder Datumswert sowieso als Zahl (wenn mich nicht alles täuscht auch in Sekunden) dargestellt und gespeichert. Darum kann ich deinen Vorgehensweise nicht nachvollziehen.

Und dein drittes Problem mit dem Durchsuchen des Formulars hab ich dir bereits ganz ausführlich in deinem anderen Posting beantwortet. Darum schreib ich jetzt hier nicht mehr auf ;-) Ich denke, dort ist es sehr ausführlich beschrieben wie es funktionieren sollte und wie man vorgehen sollte.

Schöne Grüße,
Chrisu
 

Luzie

Erfahrenes Mitglied
Huhu

das mit den Regulären Ausdrücken ist leider nicht mal eben so programmiert. Da beißen sich auch noch Profis die Zähne dran aus. Man muss schon etwas Routine und Übung haben, um damit einigermaßen selbst kleine Sachen schreiben zu können. :)

Gut beschrieben ist es auf diesen Seiten
http://www.regular-expressions.info/
http://www.regenechsen.de/regex_de/regex_1_de.html
http://www.tutorials.de/tutorials142738.html

Na und weil Räder bekanntlich ja nicht immer wieder neu erfunden werden müssen, gibts auch eine Library, da findet sich meistens etwas.
http://www.regexlib.com/

Wichtig vor allem ist aber, dieses Objekt in vbScript richtig anwenden zu können. Das ist nicht so einfach wie in php.

Es gibt unterschiedliche Einsatzmöglichkeiten (3 Methoden)

1. wenn ein Ausdruck gefunden wird und es durch einen Platzhalter ersetzt werden soll (Replace),
2. Wenn ein Ausdruck mit einer Eingabe verglichen werden soll, um true oder false zurückzugeben (test) - kann man gut bei einer Formularüberprüfung verwenden
3. wenn ein Ausdruck (match) gefunden und dargestellt werden soll (execute)

http://www.devguru.com/technologies/vbscript/14108.asp

Auch in der vbscript-Doku ist es gut beschrieben.
 
Zuletzt bearbeitet: