Added Paul's changes to the version that should be current. I have been having probl...
[koha.git] / C4 / Date.pm
1 #!/usr/bin/perl -w
2
3 package C4::Date;
4
5 use strict;
6 use C4::Context;
7 use Date::Manip;
8
9 require Exporter;
10
11 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
12
13 $VERSION = 0.01;
14
15 @ISA = qw(Exporter);
16
17 @EXPORT = qw(
18              &display_date_format
19              &format_date
20              &format_date_in_iso
21 );
22
23
24 sub get_date_format
25 {
26         #Get the database handle
27         my $dbh = C4::Context->dbh;
28         return C4::Context->preference('dateformat');
29 }
30
31 sub display_date_format
32 {
33         my $dateformat = get_date_format();
34         
35         if ( $dateformat eq "us" )
36         {
37                 return "mm/dd/yyyy";
38         }
39         elsif ( $dateformat eq "metric" )
40         {
41                 return "dd/mm/yyyy";
42         }
43         elsif ( $dateformat eq "iso" )
44         {
45                 return "yyyy-mm-dd";
46         }
47         else
48         {
49                 return "Invalid date format: $dateformat. Please change in system preferences";
50         }
51 }
52
53
54 sub format_date
55 {
56         my $olddate = shift;
57         my $newdate;
58
59         my $dateformat = get_date_format();
60         
61         if ( $dateformat eq "us" )
62         {
63                 Date_Init("DateFormat=US");
64                 $olddate = ParseDate($olddate);
65                 $newdate = UnixDate($olddate,'%m/%d/%Y');
66         }
67         elsif ( $dateformat eq "metric" )
68         {
69                 Date_Init("DateFormat=metric");
70                 $olddate = ParseDate($olddate);
71                 $newdate = UnixDate($olddate,'%d/%m/%Y');
72         }
73         elsif ( $dateformat eq "iso" )
74         {
75                 Date_Init("DateFormat=iso");
76                 $olddate = ParseDate($olddate);
77                 $newdate = UnixDate($olddate,'%Y-%m-%d');
78         }
79         else
80         {
81                 return "Invalid date format: $dateformat. Please change in system preferences";
82         }
83 }
84
85 sub format_date_in_iso
86 {
87         my $olddate = shift;
88         my $newdate;
89                 
90         my $dateformat = get_date_format();
91
92         if ( $dateformat eq "us" )
93         {
94                 Date_Init("DateFormat=US");
95                 $olddate = ParseDate($olddate);
96         }
97         elsif ( $dateformat eq "metric" )
98         {
99                 Date_Init("DateFormat=metric");
100                 $olddate = ParseDate($olddate);
101         }
102         elsif ( $dateformat eq "iso" )
103         {
104                 Date_Init("DateFormat=iso");
105                 $olddate = ParseDate($olddate);
106         }
107         else
108         {
109                 return "9999-99-99";
110         }
111
112         $newdate = UnixDate($olddate, '%Y-%m-%d');
113
114         return $newdate;
115 }
116 1;