Artiklar » ASP » Lär dig alla inbyggda datumfunktioner

 
 

Lär dig alla inbyggda datumfunktioner

Författare: mattiasjarnhall
Datum: den 30 maj 2002
Antal lästa: 10238
Ej stjärnmärkt

Datumfunktioner i ASP

I VBscript finns några färdiga datumfunktioner som man kan använda sig av för att manipulera datum.
I denna artikel har jag tänkt att gå igenom dessa funktioner och beskriva hur de fungerar, jag kommer avsluta med ett praktiskt exempel på hur några av dessa kan användas i ett asp-script.
DateAdd(parameter1,parameter2,parameter3)

Ibland vill man ändra ett datum med visst antal dagar,månader,år, mm. För detta passar DateAdd-funktionen perfekt!

Funktionen tar 3 parametrar:
parameter1: Vad som skall ändras (Tex: dagar, månader, år)
parameter2: Med hur mycket man skall ändra (Tex 12 för att öka med 12, och -3 för att minska med 3)
parameter3: Det datum som skall ändras

De värden som parameter1 kan ha är följande:
parameter1 / Beskrivning
yyyy / År
q / Kvartal
m / Månad
y / Dag på året
d / Dag
w / Veckodag
ww / Vecka på året
h / Timme
n / Minut
s / Sekund
Kod:
<%

' Hämta det aktuella datumet
  dtmMittDatum = Date()

' Öka på datumet med 5 dagar
  dtmMittDatum = DateAdd("d",5,dtmMittDatum)

  Response.Write "Om fem dagar är det detta datum: " & dtmMittDatum

%>


Resultat:
DatePart(parameter1,parameter2[,parameter3,parameter4])

Vill du "plocka ut" en viss del av ett datum (tex den aktuella veckan just idag eller kanske vilken månad det är om 15 dagar) så kan du använda dig av DatePart-funktionen.

Den tar 4 parametrar, var av två är valfria att använda:
parameter1: Vad som skall "plockas ut"
parameter2: Från vilket datum det skall ske
parameter3: Ställer in första dagen på veckan
parameter4: Ställer in första veckan på året

Parameter1 är samma som i listan ovan. Så vill du tex hämta den aktuella veckan så skulle koden kunna se ut såhär:
Kod:
<%

' Hämta det aktuella datumet
  dtmMittDatum = Date()

' Plocka ut den aktuella veckan
  dtmAktuellVecka = DatePart("ww",dtmMittDatum)

  Response.Write "Just nu är det vecka: " & dtmAktuellVecka

%>


Resultat:
Parameter3 använder man för att ställa in vilken veckodag som är först i veckan, du kanske tycker att det är självklart att det är Måndag. Men i någon tyckte att Söndag skulle räknas som den första dagen i veckan och har satt det som standard värde. Så för att ställa in så att systemet skall fatta att det är Måndag som är första dagen på veckan så sätter du parameter 3 till: vbMonday eller 2. Samtliga värden som parameter 3 kan ha:

parameter3 / Beskrivning
vbUseSystem / Ställer in värdet efter det land som servern står i
vbSunday / Söndag blir första dagen i veckan (default)
vbMonday / Måndag blir första dagen i veckan
vbTuesday / Tisdag blir första dagen i veckan
vbWednesday / Onsdag blir första dagen i veckan
vbThursday / Torsdag blir första dagen i veckan
vbFriday / Fredag blir första dagen i veckan
vbSaturday / Lördag blir första dagen i veckan

Parameter4 används för att ställa in vad man skall räkna som den första veckan på året. Parameter4 kan ha följande värden:
parameter3 / Beskrivning
vbUseSystem / Ställer in värdet efter det land som servern står i
vbFirstJan1 / Förstaveckan på året blir den som 1:a Januari är i (Vecka två kan alltså börja 2:a Januari om det vill sig illa)
vbFirstFourDays / Första veckan på året blir den vecka som har minst 4:a dagar på det nya året.
vbFirstFullWeek / Första veckan på året blir den vecka som har alla 7 dagar på det nya året

Alternativ till DatePart
DatePart i all ära, men det finns smidigare sätt att hämta År, månad, dag, tid, och veckodag på:

Funktion / Returvärde
Year(datum) / Returnerar året för det datum du angett
Month(datum) / Returnerar månaden för det datum du angett
Day(datum) / Returnerar dagen för det datum du angett
Time(datum+tid) / Returnerar tiden för det datum+tid du angett
Weekday(datum) / Returnerar veckodagen för det datum du angett

Tänk på!
Att när du hämtar månad eller veckodag så får du ett värde i retur (1-7 när det gäller veckodagar, och 1-12 när det gäller månader)
Så vill du skriva ut veckodag eller månad med text måste du skapa en funktion som gör det åt dig. Denn funktion kommer jag att avsluta artikeln med.
DateDiff(parameter1,parameter2,parameter3[,parameter4,parameter5])

DateDiff använder du när du vill beräkna skillnaden mellan två datum. Som du ser tar funktionen hela 5 parametrar! Men de två sista är samma som parameter 3 och 4 i DatePart och är alltså valfria.
parameter1: Vad man skall beräkna skillnaden i (Tex: i antal dagar, eller antal Månader)
parameter2: Datum1
parameter3: Datum2

I exemplet nedan kommer jag att beräkna antal dagar som jag har levt :)

Kod:
<%

' Hämta det aktuella datumet
  dtmIdag = Date()

' Datum då jag föddes
  dtmFoddes = "1979-07-19"

' Beräkna antal dagar sedan jag föddes
  dtmAntalDagar = DateDiff("d",dtmFoddes, dtmIdag)

  Response.Write "Mattias föddes för " & dtmAntalDagar & " dagar sedan!"

%>


Resultat:
Cdate() och isDate()

När man håller på och manipulerar datum med dessa funktioner så förväntar sig funktionen att man skickar med ett godkännt datum. Eftersom alla variabeltyper är av typen variant så kan kanske funktionen få för sig att tolka ditt datum som en sträng och genererar då ett fel.
För att råda bot på detta så kan man konvertera din variabel till ett datum genom funktionen Cdate(dinVariabel). Denna kommer nu att göra om din variabel till ett datum (om det är möjligt).
Man kan även kontrollera om en variabel är av typen datum genom att använda funktionen isDate(stmMittDatum). isDate returnerar TRUE om det är ett datum, och FALSE om det inte är ett datum.

Avslutningsvis skall jag nu kombinera några av dessa funktioner genom att skapa en egen funktion som returnerar veckodag för ett datum med text (alltså Måndag, Tisdag,.. osv)
Kod:
<%

  Function veckodag(dtmDatum)

' Börja med en kontroll om det som skickats in verkligen är ett datum
  If NOT isDate(Cdate(dtmDatum)) Then

' Ej ett datum
  veckodag = "Det var inte ett datum"

  Else

' Godkännt datum
' Hämta datumets veckodag
  intVecka = DatePart("w",dtmDatum,vbMonday)

' Skriv ut rätt veckodag
  Select Case intVecka

  Case 1 veckodag = "Måndag"
  Case 2 veckodag = "Tisdag"
  Case 3 veckodag = "Onsdag"
  Case 4 veckodag = "Torsdag"
  Case 5 veckodag = "Fredag"
  Case 6 veckodag = "Lördag"
  Case 7 veckodag = "Söndag"

  End Select
  End If
  End Function

' Nu kan du anroparopa din funktion såhär:
  Response.Write("Dagens veckodag är: " & veckodag(Date()))

%>


/ Mattias Järnhäll
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,0625 sekunder att ladda sidan