Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] работа с датами в vb6 (http://forum.oszone.net/showthread.php?t=336545)

artemu88 05-09-2018 12:23 2830032

работа с датами в vb6
 
добрый день!

Пишу программу для расчета отпусков, столкнулся с такой проблемой: есть 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 2830066

artemu88, старайтесь сразу прикладывать готовый проект, так будет проще отвечающим.

Project1.vbp
Код:

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


Form1.frm
Код:

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



Время: 00:31.

Время: 00:31.
© OSzone.net 2001-