webForumDet fria alternativet

Funktioner för Datum ......

ASP

20 svar · 286 visningar · startad av PatrikB

Medlem sedan mars 20002 836 inlägg
Frågan#1

Hello,

tänkte bara dela med mig två enkla datum funktioner =) .....

Denna visar detta:

Vecka 20
[8/5 - 14/5]

Koden för ovanstående:

' Fixar Vecko nummer, startdag och slutdag för aktuell vecka.
'---------------------------------------------
Function WeekStartEndDate(myDate)

	' Fixar vilken vecka
	'---------------------------------------------
	MyDate = Year(Now) & "-01-01"
	EndDate = Now
	StartNo = WeekDay(MyDate,2)

	For i = DateValue(MyDate) to DateValue(EndDate)
		d = d + 1
		Days = d
	Next

	Do Until d =< 0

		For n = StartNo to 7
			d = d - 1
		Next
	
		StartNo = 1
		w = w + 1
	
	Loop

	' start och slut dag i veckan
	'-----------------------------
	StartDay = Day(DateDiff("d",WeekDay(myDate,2) - 1,myDate)) & "/" & Month(DateDiff("d",7 - WeekDay(myDate,2),myDate))
	EndDay = Day(DateAdd("d",7 - WeekDay(myDate,2),myDate)) & "/" & Month(DateAdd("d",7 - WeekDay(myDate,2),myDate))
	WeekStartEndDate = "<b>Vecka " & w & "<br>[</b>" & StartDay & " - " & EndDay & "<b>]</b>"

End Function

Den andra ändrar den första bokstaven från gemen till versal .... ni vet att när man vill ha fram tex Dagens namn ... fredag .... så får man ju liten bokstav. Ser bättre ut med stor bokstav. ..... Fredag.

' Ändrar första bokstaven från gemen till versal
'-----------------------------------------------
Function chgFirstToUCase(String)

	chgString = Left(String,1)
	chgString = UCase(chgString) & Right(String,Len(String) - 1)
chgFirstToUCase = chgString

End Function

Håll till godo alla intresserade.

/PatrikB

PS .... finns det fler som vill dela med sig av kod, posta ... DS

[Redigerat av PatrikB den 12 maj 2000]

[Redigerat av PatrikB den 12 maj 2000]

Medlem sedan mars 20002 542 inlägg
#2

TACK Ja vi borde kanske ha ett script arkiv ?? Jag har ett par som jag gärna delar med mej av :f

------------------
/Mvh Annelie( http://www.annelie.nu )

Medlem sedan maj 20001 953 inlägg
#3

Ett riktigt bra förslag det där med script arkiv iden. Eller kanske man kunde skapa ett eget forum där man kan dela med sig av det man kan.

Tyvärr kan jag kanske inte bidra så mycket men man kan ju alltid knycka andras script :e :e :e

------------------

Mvh Chavez

Medlem sedan mars 20001 266 inlägg
#4

Var det inte nåt sånt webmaster.nu var tänkt att det skulle bli?
Väntar på den sidan men den verkar aldrig komma :)

Andreas

Medlem sedan maj 200022 inlägg
#5

PatrikB>>>
Det är inte vecka 20, utan vecka 19
[8/5 - 14/5]
Men det visste du kanske redan om

Medlem sedan mars 20002 836 inlägg
#6

Hello ASP Ny .....

.... tackar för det .... det visste jag inte =P .... måste sätt fel i kalendern.

Den nya koden:

' Fixar Vecko nummer, startdag och slutdag för aktuell vecka.
'---------------------------------------------
Function WeekStartEndDate(myDate)

	' Fixar vilken vecka
	'---------------------------------------------
	MyYear = Year(Now) & "-01-01"
	EndDate = Now
	StartNo = WeekDay(myDate,2)

	For i = DateValue(MyYear) to DateValue(EndDate)
		d = d + 1
		Days = d
	Next

	Do Until d =< 0

		For n = StartNo to 7
			d = d - 1
		Next
	
		StartNo = 1
		w = w + 1
	
	Loop

		' start och slut dag i veckan
	'-----------------------------
	StartDay = Day(DateDiff("d",WeekDay(myDate,2) - 1,myDate)) & "/" & Month(DateDiff("d",7 - WeekDay(myDate,2),myDate))
	EndDay = Day(DateAdd("d",7 - WeekDay(myDate,2),myDate)) & "/" & Month(DateAdd("d",7 - WeekDay(myDate,2),myDate))
	WeekStartEndDate = "<b>Vecka " & w & "<br>[</b>" & StartDay & " - " & EndDay & "<b>]</b>"

End Function

Där man vill att det ska visas skriver man sedan in

<% =WeekStartEndDate(Now)%>

Tackar för att du var så observant

//PatrikB

[Redigerat av PatrikB den 13 maj 2000]

[Redigerat av PatrikB den 17 maj 2000]

Medlem sedan mars 200046 inlägg
#7

Din sista kod fungerar utan att dra ifrån 1 från "w". Om du drar bort 1 så blir det en vecka för lite.

En annan sak som jag upptäckt är att i månadsskiftet så blir det lite fel. Visar här 3v. i rad:

Vecka 22
[29/5 - 4/6]

Vecka 23
[5/5 - 11/6]

Vecka 24
[12/6 - 18/6]

Det blir så att säga lite fel v.23.
Någon som har löst det redan?

Mycket tacksam för exemplet och hoppas på fler sådana i framtiden.

/daniel - (väntar på ett scriptarkiv) :)

Medlem sedan mars 20002 836 inlägg
#8

Hello,

kan ej se vad det är för fel på vecka 23....fast du hade rätt om att jag inte ska dra ifrån ... det var rätt från början ...?:)

/PatrikB

Medlem sedan maj 2000175 inlägg
#9

Det finns en asp-del på www.programmersheaven.com
där kan man ladda upp filer om man vill... tyvärr så har ingen gjort det ännu :(

[Redigerat av rymdknark den 18 maj 2000]

Medlem sedan mars 200046 inlägg
#10

Att det såg fel ut från början kan bero på att vecka 1 inte startade den 1 jan. Vecka ett börjar dessutom olika. Är det inte så att v.1 alltid börjar första måndag från och med den 30 dec.?

Många nya faktorer att lägga till i scriptet. :)

/daniel

Medlem sedan mars 20002 836 inlägg
#11

Hello,
du har rätt i att årets första vecka alltid startar måndagen efter den 30 december.

Nu har jag uppdaterat scriptet så att det ska stämma (kolla noga .... man vet aldrig)

<%
Function WeekStartEndDate(myDate)
' Fixar vilken vecka
'---------------------------------------------
MyYear = DateDiff("y",1,Year(Now)) & "-12-30"
EndDate = Now
StartNo = WeekDay(MyYear,2)

For i = DateValue(MyYear) to DateValue(EndDate)
d = d + 1
Days = d
Next

Do Until d =< 0

For n = StartNo to 7
d = d - 1
Next

StartNo = 1
w = w + 1

Loop

' Tar bort en vecka eftersom
' räknaren börjar på föregåendes års sista vecka
w = w - 1

' start och slut dag i veckan
'-----------------------------
StartDay = Day(DateDiff("d",WeekDay(myDate,2) - 1,myDate)) & "/" & Month(DateDiff("d",7 - WeekDay(myDate,2),myDate))
EndDay = Day(DateAdd("d",7 - WeekDay(myDate,2),myDate)) & "/" & Month(DateAdd("d",7 - WeekDay(myDate,2),myDate))
WeekStartEndDate = "<b>Vecka " & w & "<br>[</b>" & StartDay & " - " & EndDay & "<b>]</b>"

End Function
%>

ändrade raden där det står:
MyYear = ....

så att vecko räkningen börjar föregående års sista vecka.

La sedan till w = w - 1 efter loopen eftersom även sista veckan förra året räknas med och således skulle det visa en vecka för mycket annars.

Hoppas att det ska stämma nu ....

/PatrikB

Medlem sedan mars 200046 inlägg
#12

Blir du ledsen nu när jag skriver och klagar igen? ;)

När jag kommer till en vecka i ett månadsskifte så visas startdatumet på veckan fel.
ex. 1/4 - 7/5
Tuff arbetsvecka. :) Har du någon snygg lösning på det också?

/daniel

Medlem sedan mars 20002 836 inlägg
#13

Hello!! igen ....

nä, inte blir jag sur inte. Meningen med att dela med sig är egentligen att det är det snabbaste sättet att få skripten "bug"-fria. titta bara på detta script.....redan mycket som har blivit tillrätta lagt ....

Någon lösning på detta har jag ej ännu .. får se vad kvällen ger ..

/PatrikB

Medlem sedan mars 20002 836 inlägg
#14

Hello,

har löst detta med att första veckan vart liiiite lång =P ...

Function WeekStartEndDate(myDate)
' Fixar vilken vecka
'---------------------------------------------
	MyYear = DateDiff("y",1,Year(Now)) & "-12-30"
	EndDate = Now
	StartNo = WeekDay(MyYear,2)

	For i = DateValue(MyYear) to DateValue(EndDate)
		d = d + 1
		Days = d
	Next

	Do Until d =< 0

		For n = StartNo to 7
			d = d - 1
		Next

		StartNo = 1
		w = w + 1

	Loop

' Tar bort en vecka eftersom
' räknaren börjar på föregåendes års sista vecka
	w = w - 1

' start och slut dag i veckan
'-----------------------------
' Denna rad är ändrad
'--------------------

	StartDay = Day(DateDiff("d",WeekDay(myDate,2) - 1,myDate)) & "/" & Month(DateDiff("d",WeekDay(myDate,2) - 1,myDate))
	EndDay = Day(DateAdd("d",7 - WeekDay(myDate,2),myDate)) & "/" & Month(DateAdd("d",7 - WeekDay(myDate,2),myDate))
	WeekStartEndDate = "<b>Vecka " & w & "<br>[</b>" & StartDay & " - " & EndDay & "<b>]</b>"

End Function

Har ändrat endast en rad som jag såg att det stod fel på ... måste ha varit "finger-nisse" som varit i farten :)

Raden är i slutet och som ger varabeln StartDay

Några fler som hittat något annat är jag glad om ni hör av er ....

/PatrikB

[Redigerat av PatrikB den 19 maj 2000]

Medlem sedan mars 200046 inlägg
#15

Done it again! Hittat ett nytt fel. :)

Om du testar årsskiftet 2001-2002 så får du en extra vecka.

Vecka 53
[31/12 - 6/1]

/daniel - Mr. Bugfinder :h

Medlem sedan mars 200046 inlägg
#16

Lite till att bearbeta. 1992 hade 53 veckor. Det betyder att om det finns 4(mer än halva veckan) dagar i från föregående året i vecka 1 så kommer den veckan automatiskt att bli vecka 53.

/daniel

Medlem sedan mars 20002 836 inlägg
#17

Hello,

vet, och jag har ej kommit på ngn bra lösning. Är det någon som har det?

/patrikB

Medlem sedan mars 20002 542 inlägg
#18

En liten parantes som eg. inte har med scriptet att göra kanske....1998 hade 53 veckor irl ju....Kan det vara så 2001 - 2002 oxå då kanske ?

------------------
/Mvh Annelie( http://www.annelie.nu )

[Redigerat av Annelie den 19 maj 2000]

Medlem sedan maj 2000426 inlägg
#19

Varför inte använda detta script:

<%
startdag = Date() - Weekday(Date(), 2) + 1
slutdag = Date() - Weekday(Date(), 2) + 7
%>
Vecka <%= DatePart("ww", Date(), 2, 2)%><br>
[<%=Day(startdag)%>/<%=Month(startdag)%>
 -  <%=Day(slutdag)%>/<%=Month(slutdag)%>]

[Redigerat av fredrik99 den 22 maj 2000]

Medlem sedan mars 200046 inlägg
#20

Annerli:
En liten parantes som eg. inte har med scriptet att göra kanske....1998 hade 53 veckor irl ju....Kan det vara så 2001 - 2002 oxå då kanske ?

Hmmm, jag har nog haft fel. Det är iaf ingen v.53 2001. Har spanat lite i kalendern och sett ett samband med att om den 31dec ligger på en söndag så blir det 53v. Då borde nästa 53veckors år ligga 2009 och därefter 2015, 2020... Intervallet mellan åren är 11, 6, 5, 6 och sedan 11, 6 osv.

/daniel

387 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
131 ms — deklarationer (db)
122 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)