User Tools

Site Tools


vba:cast:numtodate

Table of Contents

[VBA] numToDate()

Wandelt eine Zahl (auch Unixtimestamps) in ein Datum.

Version 1.0.2 - 19.10.2015

Beispiele

Für die Ausgabe der Resultate verwendete ich die Funktion [VBA] print_r().
'Ein Unix-Timestamp (1970)
d numToDate(1446460704,,ntdUnixTimestamp)
<Date> 02.11.2015 10:38:24
 
'Tage seit dem Microsoft-Null (1900)
d numToDate(52158, "d")
<Date> 19.10.2042

Code

cast_numtodate.bas
Attribute VB_Name = "cast_numToDate"
'-------------------------------------------------------------------------------
'File         : cast_numToDate.bas
'               Copyright mpl by ERB software
'               All rights reserved
'               http://wiki.yaslaw.info/dokuwiki/doku.php/vba/cast/numtodate
'Environment  : VBA 2007 +
'Version      : 1.0.2
'Name         : numToDate
'Author       : Stefan Erb (ERS)
'History      : 04.08.2014 - ERS - Creation
'               05.09.2014 - ERS - Vorzeichen korrigiert
'               19.10.2015 - ERS - cDec() hinzugefügt
'-------------------------------------------------------------------------------
Option Explicit
 
Private Const C_UNIX_START As Date = #1/1/1970#     'Januar 1 1970 00:00:00
 
Public Enum ntdInputType
    ntdDefault          'DateDadd() auf Das Jahr 1900
    ntdUnixTimestamp    'DateAdd auf das Jahr 1970
    ntdDouble           'Das Datum ist im Format cdbl(date)
End Enum
 
'/**
' * @param  variant (Decimal)   Zahl die gewandelt werden soll
' * @param  String              Interval. Um was es sich bei der Zahl handelt (wird bei ntdDouble ignoriert). Analog zu DateAdd()
' * @param  ntdInputType        Spezifikation was die Augangslage ist.
' * @return Date
' */s
Public Function numToDate(ByVal iNumber As Variant, Optional ByVal iInterval As String = "s", Optional ByVal iInputType As ntdInputType = ntdDefault) As Date
    Dim num As Variant: num = CDec(iNumber)
    Select Case iInputType
        Case ntdUnixTimestamp:  numToDate = DateAdd(iInterval, num, C_UNIX_START)
        Case ntdDouble:         numToDate = CDate(num)
        Case Else:              numToDate = DateAdd(iInterval, num, 0)
    End Select
End Function
 
 
vba/cast/numtodate.txt · Last modified: 03.02.2016 15:03:55 by yaslaw