File: hdate_pascal.pp

package info (click to toggle)
libhdate 1.6.02-2.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 3,912 kB
  • sloc: sh: 11,647; ansic: 5,120; pascal: 1,059; makefile: 196; sed: 16; cpp: 13; perl: 7; python: 7; php: 5; ruby: 5
file content (151 lines) | stat: -rw-r--r-- 6,050 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
(* hdate_pascal.pp
   example file for libhdate.

   compile: fpc hdate_pascal.pp
    
   Copyright (C) 2005-2008  Ido Kaner

   This program is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
*)

{$MODE OBJFPC} {$H+}
{$IFDEF MSWINDOWS}
  {$APPTYPE CONSOLE} //Make sure that in Windows we will be in a console mode
{$ENDIF}
program hdate_demo;
uses hdate_class, SysUtils, DateUtils;

type
  { A record to store city information regarding the Latitude, Longitude and it's name }
  TCityDetauls = record
                  { The latitude of a given city}
                  Latitude  : Double;
                  { The longitude of a given city}
                  Longitude : Double;
                  { The name of a city}
                  Name      : ShortString;
                 end;

// Latitude and Longitude where Taken from from http://wwp.greenwichmeantime.com/time-zone/asia/israel/cities.htm
const
  { The cities in Israel that we have information regarding the Latitude and Longitude }
  Cities : array[0..19] of TCityDetauls =
    (
{ 00 }  ( Latitude : 31.78;  Longitude : 35.22;  Name : 'Jerusalem'     ),
{ 01 }  ( Latitude : 32.07;  Longitude : 34.77;  Name : 'Tel Aviv-Jafa' ),
{ 02 }  ( Latitude : 32.82;  Longitude : 34.99;  Name : 'Hifa'          ),
{ 03 }  ( Latitude : 31.96;  Longitude : 34.80;  Name : 'Rishon Lezion' ),
{ 04 }  ( Latitude : 31.80;  Longitude : 34.64;  Name : 'Ashdod'        ),
{ 05 }  ( Latitude : 31.25;  Longitude : 34.80;  Name : 'Be''er Sheva'  ),
{ 06 }  ( Latitude : 32.09;  Longitude : 34.88;  Name : 'Petach Tiqva'  ),
{ 07 }  ( Latitude : 32.33;  Longitude : 34.86;  Name : 'Netanya'       ),
{ 08 }  ( Latitude : 32.02;  Longitude : 34.76;  Name : 'Holon'         ),
{ 09 }  ( Latitude : 32.09;  Longitude : 34.85;  Name : 'B''ene Beraq'  ),
{ 10 }  ( Latitude : 32.02;  Longitude : 34.75;  Name : 'Bat Yam'       ),
{ 11 }  ( Latitude : 32.08;  Longitude : 34.80;  Name : 'Ramat Gan'     ),
{ 12 }  ( Latitude : 31.67;  Longitude : 34.56;  Name : 'Ashqelon'      ),
{ 13 }  ( Latitude : 31.89;  Longitude : 34.80;  Name : 'Rehovot'       ),
{ 14 }  ( Latitude : 32.17;  Longitude : 34.84;  Name : 'Herzeliyya'    ),
{ 15 }  ( Latitude : 32.19;  Longitude : 34.91;  Name : 'Kfar Saba'     ),
{ 16 }  ( Latitude : 32.45;  Longitude : 34.92;  Name : 'Hadera'        ),
{ 17 }  ( Latitude : 32.19;  Longitude : 34.88;  Name : 'Ra''anana'     ),
{ 18 }  ( Latitude : 31.96;  Longitude : 34.90;  Name : 'Lod'           ),
{ 19 }  ( Latitude : 31.93;  Longitude : 34.86;  Name : 'Ramla'         )
    );

{ Convert the given minutes into full TTime and retrun it as a string
  Params:
  minute - The number of minutes since the start of the day}
function MinutesToHours(minute : Longint) : String;
begin
  MinutesToHours := TimeToStr(OneMinute * minute);
end;

var
{ Our hdate class }
 h           : THdateClass;
{ A variable that saves the flag for Israel or the rest of the world }
 diaspora    : Integer;
{ Israel's time zone in hours, used to adjust utc times (GMT) to locale time }
 time_zone   : Integer;
{ Temporary Storing of the minutes for specific query }
 tmp         : Longint;
{ The degree of the sunrise/sunset that we are looking at, default is 90 }
 deg         : Longint;
{ The Longitude of a city }
 Long        : Double;
{ The Latitude of a city }
 Lat         : Double;
{ The name of a city }
 LongLatName : String;
{ The for loop counter }
 i           : integer;
 
begin
 h        := THdateClass.Create;
 diaspora := 0;
 time_zone := 2;

 try
  // print gregorian date
  writeln (Format('Today: %0.2d/%0.2d/%4d',[h.GregDay,h.GregMonth,h.GregYear]));
 
  // print hebrew date
  writeln (h.get_format_date (diaspora));
  writeln;

  writeln('Corrent Time: ', TimeToStr(Now));
  writeln;

  for i := Low(Cities) to High(Cities) do
    begin
     Long        := Cities[i].Longitude;
     Lat         := Cities[i].Latitude;
     LongLatName := Cities[i].Name;
     
     Writeln('City: ', LongLatName);
     Writeln(#9'Latitude: ', FloatToStr(Lat));
     Writeln(#9'Longitude: ', FloatToStr(Long));
  
     // print Time using a degree of sunrise/sunset
     deg := 90;
     writeln(#9'Degree: ', deg);
     tmp := h.get_deg_sunrise(Now, Lat, Long, deg);
     writeln (#9'hour of sunrise: ', MinutesToHours(tmp + time_zone * 60));
     tmp := h.get_deg_sunset(Now, Lat, Long, deg);
     writeln(#9'hour of sunset: ', MinutesToHours(tmp + time_zone * 60));
  
     //print information
     tmp := h.get_temporary_time(Now, Lat, Long);
     writeln(#9'Temporary hour length: ', MinutesToHours(tmp));
     tmp := h.get_first_light(Now, Lat, Long);
     writeln(#9'first light: ', MinutesToHours(tmp + time_zone * 60));
     tmp := h.get_prayer_time(Now, Lat, Long);
     writeln(#9'talit time: ', MinutesToHours(tmp + time_zone * 60));
     tmp := h.get_time_full_sunrise(Now, Lat, Long);
     writeln(#9'full sunrise: ', MinutesToHours(tmp + time_zone * 60));
     tmp := h.get_time_full_midday(Now, Lat, Long);
     writeln(#9'full midday: ', MinutesToHours(tmp + time_zone * 60));
     tmp := h.get_time_full_sunset(Now, Lat, Long);
     writeln(#9'full sunset: ', MinutesToHours(tmp + time_zone * 60));
     tmp := h.get_time_full_first_stars(Now, Lat, Long);
     writeln(#9'first stars: ', MinutesToHours(tmp + time_zone * 60));
     tmp := h.get_time_full_three_stars(Now, Lat, Long);
     writeln(#9'three stars: ', MinutesToHours(tmp + time_zone * 60));
     writeln;
    end;
 finally
  h.Free;
 end;
end.