home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tcpipvp2.zip / U_DATETIME.PAS < prev   
Pascal/Delphi Source File  |  1996-10-10  |  5KB  |  130 lines

  1. unit U_DateTime;
  2.  
  3. interface
  4.  
  5. uses OS2Def,OS2Base;
  6.  
  7. type
  8.   LanguageType = (Default,English,German);
  9.  
  10.   (***************************************************************************)
  11.   function Get_DayOfWeek  (Language: LanguageType; InValue: longint):  string;
  12.   (***************************************************************************)
  13.   function Get_NameOfMonth(Language: LanguageType; InValue: longint):  string;
  14.   (***************************************************************************)
  15.   function Long_DateString(Language: LanguageType; InValue: DateTime): string;
  16.   (***************************************************************************)
  17.  
  18. implementation
  19.  
  20. const
  21.   Version    = '00.90';
  22.   UseString:  string = '@(#)date-time-routines unit'+#0;
  23.   CopyRight1: string = '@(#)u_datetime Version '+Version+' - 10.10.96'+#0;
  24.   CopyRight2: string = '@(#)(C) Chr.Hohmann BfS ST2.2 1996'+#0;
  25.  
  26.  
  27.   EmptyString  = '   ';
  28.   MinDayOfWeek =     0;
  29.   MaxDayOfWeek =     6;
  30.   MinMonth     =     1;
  31.   MaxMonth     =    12;
  32.   DoJulian     =  true;
  33.   NoJulian     = false;
  34.   MaxULong: double = 4.294967296E09;
  35.   DayOfWeek:  array[MinDayOfWeek..MaxDayOfWeek] of string[3] =
  36.                 ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
  37.   WochenTag:  array[MinDayOfWeek..MaxDayOfWeek] of string[2] =
  38.                 ('So','Mo','Di','Mi','Do','Fr','Sa');
  39.   MonthName:  array[MinMonth..MaxMonth] of string[3] =
  40.                 ('Jan','Feb','Mar','Apr','May','Jun',
  41.                  'Jul','Aug','Sep','Oct','Nov','Dec');
  42.   MonatName:  array[MinMonth..MaxMonth] of string[3] =
  43.                 ('Jan','Feb','Mrz','Apr','Mai','Jun',
  44.                  'Jul','Aug','Sep','Okt','Nov','Dez');
  45.  
  46.   (***************************************************************************)
  47.   function Get_Day_in_Seconds(Year,Month,Day,Hour,Min,Sec: word): double;
  48.   var
  49.     Temp: double;
  50.   begin
  51.     if Year < 100 then inc(Year,1900);
  52.     if Month < 3 then begin
  53.       dec(Year,1);
  54.       inc(Month,12);
  55.     end;
  56.     Temp := int(365.25*Year) +int(30.6001*(Month+1)) +Day;
  57.     Get_Day_in_Seconds := Temp*24*3600 +Hour*3600 +Min*60 +Sec;
  58.   end;
  59.   (***************************************************************************)
  60.   function Get_DayOfWeek(Language: LanguageType; InValue: longint): string;
  61.   begin
  62.     if (InValue >= MinDayOfWeek) and (InValue <= MaxDayOfWeek) then begin
  63.       case ord(Language) of
  64.         ord(Default),
  65.         ord(English): Get_DayOfWeek := DayOfWeek[InValue];
  66.         ord(German):  Get_DayOfWeek := Wochentag[InValue];
  67.       else
  68.         Get_DayOfWeek := EmptyString;
  69.       end;
  70.     end else Get_DayOfWeek := EmptyString;
  71.   end;
  72.   (***************************************************************************)
  73.   function Get_NameOfMonth(Language: LanguageType; InValue: longint): string;
  74.   begin
  75.     if (InValue >= MinMonth) and (InValue <= MaxMonth) then begin
  76.       case ord(Language) of
  77.         ord(Default),
  78.         ord(English): Get_NameOfMonth := MonthName[InValue];
  79.         ord(German):  Get_NameOfMonth := MonatName[InValue];
  80.       else
  81.         Get_NameOfMonth := EmptyString;
  82.       end;
  83.     end else Get_NameOfMonth := EmptyString;
  84.   end;
  85.   (***************************************************************************)
  86.   function Long_DateString(Language: LanguageType; InValue:  DateTime): string;
  87.   var
  88.     TempStrD,
  89.     TempStrY,
  90.     TempStrH,
  91.     TempStrM,
  92.     TempStrS: string[4];
  93.   begin
  94.     case ord(Language) of
  95.       ord(Default),
  96.       ord(English): with InValue do begin
  97.                       str(Day:2,TempStrD);
  98.                       str(Year,TempStrY);
  99.                       str(Hours:2,TempStrH);
  100.                       str(Minutes,TempStrM);
  101.                       str(Seconds,TempStrS);
  102.                       while (length(TempStrM) < 2) do TempStrM := '0'+TempStrM;
  103.                       while (length(TempStrS) < 2) do TempStrS := '0'+TempStrS;
  104.                       Long_DateString := Get_DayOfWeek(Default,InValue.Weekday)+' '+
  105.                                          Get_NameOfMonth(Default,InValue.Month)+' '+
  106.                                          TempStrD+' '+
  107.                                          TempStrH+':'+TempStrM+':'+TempStrS+' '+
  108.                                          TempStrY;
  109.                     end;
  110.       ord(German):   with InValue do begin
  111.                        str(Day,TempStrD);
  112.                        str(Year,TempStrY);
  113.                        str(Hours:2,TempStrH);
  114.                        str(Minutes,TempStrM);
  115.                        str(Seconds,TempStrS);
  116.                        while (length(TempStrM) < 2) do TempStrM := '0'+TempStrM;
  117.                        while (length(TempStrS) < 2) do TempStrS := '0'+TempStrS;
  118.                        Long_DateString := Get_DayOfWeek(German,InValue.Weekday)+', den '+
  119.                                           TempStrD+'.'+
  120.                                           Get_NameOfMonth(German,InValue.Month)+' '+
  121.                                           TempStrY+'  '+
  122.                                           TempStrH+':'+TempStrM+':'+TempStrS;
  123.                      end;
  124.     else
  125.       Long_DateString := '';
  126.     end;
  127.   end;
  128.   (***************************************************************************)
  129. end.
  130.