Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Tips & tricks

#137 - Kalkylera vecka och dagnummer ur ett datum

Postat 2000-12-22 11:29:55 av Pelle Johansson i Kategori Programmering, C#, Kommandon med 0 Kommentarer

Sub NewDayNrInYear(InDate As String, ReturnDay As String, Week As String, WeekDay As String, Month As String)
Dim fLeapYear As Boolean
Dim i As Long
Dim lDay As Long
Dim lDayOfYear As Long
Dim lMonth As Long
Dim lTmp As Long
Dim lTmpDay1 As Long
Dim lWeek As Long
Dim lWeekDay As Long
Dim lWeekDay1 As Long
Dim lYear As Long
Dim aDaysInMonth As Variant

If Len(InDate) = 8 Then
'''YYYYMMDD
lYear = Left$(InDate, 4)
lMonth = Mid$(InDate, 5, 2)
lDay = Right$(InDate, 2)
ElseIf Len(InDate) = 6 Then
'''YYMMDD (YY>90 antag att vi är på 1900-talet
lYear = Left$(InDate, 2)
If lYear > 90 Then lYear = lYear + 1900 Else lYear = lYear + 2000
lMonth = Mid$(InDate, 3, 2)
lDay = Right$(InDate, 2)
Else
MsgBox "Felaktigt datum format": Exit Sub
End If

If lMonth > 12 Then MsgBox "Felaktig månad": Exit Sub

fLeapYear = (lYear Mod 4 = 0)
If (lYear Mod 100 = 0) Then fLeapYear = (lYear Mod 400 = 0)

aDaysInMonth = Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
If fLeapYear Then aDaysInMonth(2) = 29
If lDay > aDaysInMonth(lMonth) Then MsgBox "Invalid day": Exit Sub

lTmp = (lYear - 1900) * 365 + (lYear - 1900) \ 4 - ((lYear - 1900) \ 400) * 3 + CInt(fLeapYear)
lTmpDay1 = lTmp + 1
For i = 1 To lMonth - 1
lDayOfYear = lDayOfYear + aDaysInMonth(i)
Next
lDayOfYear = lDayOfYear + lDay

ReturnDay = Right$("000" & lDayOfYear, 3)
lWeekDay = ((lTmp + lDayOfYear + 6) Mod 7) + 1
lWeekDay1 = ((lTmp + 6) Mod 7) + 1
WeekDay = Choose(lWeekDay, "Måndag", "Tisdag", "Onsdag", "Torsdag", _
"Fredag", "Lördag", "Söndag")
Month = Choose(lMonth, "Januari", "Februari", "Mars", "April", "Maj", _
"Juni", "Juli", "Augusti", "September", "Oktober", "November", "December")

lWeek = (lDayOfYear + lWeekDay1 - lWeekDay + 1) \ 7 + CInt(lWeekDay1 > 3) + 1

If lWeek = 0 Then
'''Kolla veckor föregående år
lYear = lYear - 1
fLeapYear = (lYear Mod 4 = 0)
If (lYear Mod 100 = 0) Then fLeapYear = (lYear Mod 400 = 0)
lTmp = (lYear - 1900) * 365 + (lYear - 1900) \ 4 - ((lYear - 1900) \ 400) * 3
lTmpDay1 = lTmp + 1 + CInt(fLeapYear)
lTmp = lTmpDay1 Mod 7
If lTmp > 4 Or lTmp = 0 Then
'''Aldrig 53 veckor 2 år i följd
lWeek = 52
Else
lWeek = 53
End If
ElseIf lWeek = 53 Then
lYear = lYear + 1
fLeapYear = (lYear Mod 4 = 0)
If (lYear Mod 100 = 0) Then fLeapYear = (lYear Mod 400 = 0)
lTmp = (lYear - 1900) * 365 + (lYear - 1900) \ 4 - ((lYear - 1900) \ 400) * 3
lTmpDay1 = lTmp + 1 + CInt(fLeapYear)
lTmp = lTmpDay1 Mod 7
If Not (lTmp > 4 Or lTmp = 0) Then lWeek = 1
End If

Week = Right$("00" & lWeek, 2)
End Sub

Sample:
Size:

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 615
27 953
271 709
5 543
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies