Войти

Показать полную графическую версию : [решено] работа с датами в vb6


artemu88
05-09-2018, 12:23
добрый день!

Пишу программу для расчета отпусков, столкнулся с такой проблемой: есть 2 поля начало периода и конец периода работы, в них значения date, нужно рассчитать сколько полных лет, дней и месяцев отработал человек:
Option Explicit
Dim a As Date, b As Date, c, d, e As Integer

Private Sub Command1_Click()
a = Text1.Text 'дата начала периода
b = Text2.Text ' дата конца периода
c = b - a ' число отработанных дней
Text5.Text = c
d = (b - a) / 12 ' число отработанных месяцев
Text4.Text = d
e = (b - a) / 365 ' число отработанных лет
Text3.Text = e
End Sub

Нужно например так: 2 года 8 месяцев 1 день. Может быть вопрос глупый, но я чет не соображу никак.

Заранее спасибо за ответ!

Iska
05-09-2018, 17:17
artemu88, старайтесь сразу прикладывать готовый проект, так будет проще отвечающим.

Type=Exe
Form=Form1.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\Windows\SysWOW64\stdole2.tlb#OLE Automation
Startup="Form1"
Command32=""
Name="Project1"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1

VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 2100
ClientLeft = 60
ClientTop = 345
ClientWidth = 5850
LinkTopic = "Form1"
ScaleHeight = 2100
ScaleWidth = 5850
StartUpPosition = 3 'Windows Default
Begin VB.TextBox tbxResultInterval
Height = 375
Left = 240
Locked = -1 'True
TabIndex = 3
Top = 1440
Width = 5295
End
Begin VB.CommandButton cmdCalculate
Caption = "Calculate"
Height = 975
Left = 2760
TabIndex = 2
Top = 240
Width = 2775
End
Begin VB.TextBox tbxFinishDate
Height = 375
Left = 240
TabIndex = 1
Top = 840
Width = 2295
End
Begin VB.TextBox tbxStartDate
Height = 375
Left = 240
TabIndex = 0
Top = 240
Width = 2295
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub cmdCalculate_Click()
Dim dtStartDate As Date
Dim dtFinishDate As Date

Dim dtPartDate As Date

Dim intYears As Integer
Dim intMonth As Integer
Dim intDays As Integer


If IsDate(Me.tbxStartDate.Text) Then
dtStartDate = CDate(Me.tbxStartDate.Text)

If IsDate(Me.tbxFinishDate.Text) Then
dtFinishDate = CDate(Me.tbxFinishDate.Text)

intYears = DateDiff("yyyy", dtStartDate, dtFinishDate)
dtPartDate = DateAdd("yyyy", intYears, dtStartDate)

intMonth = DateDiff("m", dtPartDate, dtFinishDate)
dtPartDate = DateAdd("m", intMonth, dtPartDate)

intDays = DateDiff("d", dtPartDate, dtFinishDate)

Me.tbxResultInterval.Text = intYears & " year(s) " & intMonth & " month(s) " & intDays & " day(s)"
Else
MsgBox "Finish date is not a date"
End If
Else
MsgBox "Start date is not a date"
End If
End Sub

Private Sub Form_Load()
' Две следующие строки для примера, в реальном проекте удалите их
Me.tbxStartDate.Text = "01.01.1980"
Me.tbxFinishDate.Text = "31.12.1999"
End Sub




© OSzone.net 2001-2012