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

  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino

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 570 880
27 965
271 774
676
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