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 / Forum översikt / inlägg

Posta nytt inlägg


Ålder

Postades av 2004-09-23 18:47:57 - Jan Andersson, i forum visual basic - allmänt, Tråden har 9 Kommentarer och lästs av 1102 personer

Hur får jag fram åldern på en person ?
Jag menar du är nu xxår , xxmånader och xxantal dagar i samma textruta ?
Åldern med DateDiff är lätt men ger bara Åren.
007.jan.andersson@telia.com


Svara

Sv: Ålder

Postades av 2004-09-23 20:28:10 - Johan Djupmarker

Att ange antal månader är lite difust eftersom en månad kan vara olika lång... Bättre att ange år och dagar då...

För att få detta rätt med skottår får man nog göra såhär. Räkna ut antal år med datediff. Räkna sedan ut antal dagar sedan senaste födelsedagen (månad och dag från födelsedagen och årets år om personen redan fyllt år, om personen inte fyllt år i år får du ta föregående år).

/Johan


Svara

Sv: Ålder

Postades av 2004-09-24 09:36:35 - Per Hultqvist

Här är en lösning...notera dock att skottår inte hanteras i funktionen DaysInMonth. Finns säkert en bugg eller två men jag måste göra skäl för min lön nu :-)
<code>
Option Explicit

Private Sub Command1_Click()
Dim birthdate As Date
Dim today As Date
Dim Year As Integer
Dim Month As Integer
Dim day As Integer
Dim dayToday As Integer
Dim dayBirth As Integer

birthdate = CDate("1970-11-17")
today = Now

Year = DateDiff("yyyy", birthdate, today)
If Year < 0 Then MsgBox "Datumstrul!"

Month = DateDiff("M", birthdate, today)
Month = Month - Year * 12
If Month < 0 Then
Month = 12 + Month
Year = Year - 1
End If

dayToday = DatePart("d", today)
dayBirth = DatePart("d", birthdate)
day = dayToday - dayBirth
If day < 0 Then
day = DaysInMonth(DatePart("m", today)) - dayToday + dayBirth
Month = Month - 1
If Month < 0 Then
Month = 12 + Month
Year = Year - 1
End If
End If

MsgBox "Year : " & Year & " Month : " & Month & " Day : " & day

End Sub

Public Function DaysInMonth(ByVal Month As Integer) As Integer
Select Case Month
Case 1, 3, 5, 7, 8, 10, 12
DaysInMonth = 31
Case 4, 6, 9, 11
DaysInMonth = 30
Case 2
If IsLeapYear Then
DaysInMonth = 29
Else
DaysInMonth = 28
End If
End Select
End Function

Public Function IsLeapYear() As Boolean
' TODO : Fixa skottår
IsLeapYear=False
End Function
</code>


Svara

Sv: Ålder

Postades av 2004-09-24 10:59:05 - Marcus Gus

<b>Åldern med DateDiff är lätt men ger bara Åren.</b>

Det beror ju på hur man använder den...
Koden nedan tror jag skall fungera, har inte testat alla fall och kan inte garantera att den är helt buggfri eftersom jag oxå behöver göra skäl för min lön. ;-)

<code>
Dim dtCompare As New DateTime(textbox1.text) 'födelsedatum för en person (eller annan händelse)
Dim dtNow As DateTime = Now()

Dim YearDiff As Long = DateDiff(DateInterval.Year, dtCompare, dtNow)
dtCompare = dtCompare.AddYears(YearDiff)
Dim MonthDiff As Long = DateDiff(DateInterval.Month, dtCompare, dtNow)
dtCompare = dtCompare.AddMonths(MonthDiff)
If MonthDiff < 0 Then
YearDiff -= 1
MonthDiff = 12 + MonthDiff
End If
Dim dayDiff As Long = DateDiff(DateInterval.Day, dtCompare, dtNow)
If dayDiff < 0 Then
MonthDiff -= 1
dayDiff = Date.DaysInMonth(dtCompare.Year, dtCompare.Month) + dayDiff
End If


TextBox2.Text = YearDiff.ToString & "-" & MonthDiff.ToString & "-" & dayDiff.ToString
</code>


Svara

Sv: Ålder

Postades av 2004-09-24 11:25:04 - Martin Adrian

Som JohanD sa är det svårt med månader. Hur lång tid är det mellan 2003-02-28 till 2003-03-31? Detta exempel antar att det är en månad och 3 dagar.

<code>
endDate = CDate("2004-09-24")
startDate = CDate("1980-01-01")

Do while dateadd("yyyy", years+1, startDate) < endDate
years = years + 1
Loop
startDate = dateadd("yyyy", years, startDate)
Do while dateadd("m", months+1, startDate) < endDate
months = months + 1
Loop
startDate = dateadd("m", months, startDate)
Do while dateadd("d", days+1, startDate) <= endDate
days = days + 1
Loop

msgbox "år=" & years & " månader=" & months & " dagar=" & days
</code>


Svara

Sv: Ålder

Postades av 2004-09-24 15:24:27 - Per Hultqvist

Gus : Fusk att använda VB.Net i ett VB6(?)-forum :-) Jag fick ju skriva min egen DaysInMonth...

Nä, skämt åsido...men du tar inte omhand om att Month kan bli mindre än noll om dayDiff<0...Annars är vår kod rätt lika så vi har tänkt likadant....


Svara

Sv: Ålder

Postades av 2004-09-25 12:42:17 - Torbjörn Karlsson

Bifogar ett fungerande exempel jag använt som VBScript / ASP.



PNR = Trim("620114-0000")

Ar = Left(PNR,2)
Manad = Mid(PNR,3,2)
Dag = Mid(PNR,5,2)

FodelseTid = Ar&"-"&Manad&"-"&Dag

Diff = DateDiff("yyyy", FodelseTid, Now)

If Month(FodelseTid) > Month(now()) Then
Diff = Diff - 1

Elseif Month(FodelseTid) = Month(now()) Then

If Day(FodelseTid) > Day(now()) Then
Diff = Diff - 1

End If
End If

Alder = Diff

Response.Write(Alder & " år")


mvh
Tobbe


Svara

Sv: Ålder

Postades av 2004-09-27 10:53:24 - Marcus Gus

<b>Gus : Fusk att använda VB.Net i ett VB6(?)-forum</b>

Oj, ledsen. Kollade nog lite otydligt i vilket forum det var... Skall bättra mig.


Svara

Sv: Ålder

Postades av 2004-10-03 10:33:01 - Jan Andersson

Fungerar ganska bra, men dagproblemet är
1 dag skillnad gör att svaret blir 32 dagar och det finns
ju högst 31 dagar i en månad
Men annars tack.


Svara

Nyligen

  • 13:18 Website builder
  • 17:03 Getmancar your go-to carsharing
  • 14:07 Games
  • 17:54 Vegastars New Zealand
  • 16:56 Verde Casino Danmark
  • 13:54 Vegastars: Top Australian Online C
  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025

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 571 443
27 965
271 786
800
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