Bivio::Type::DateTimeWithTimeZone
# Copyright (c) 2010 bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::Type::DateTimeWithTimeZone;
use strict;
use Bivio::Base 'Bivio.Type';
my($_IDI) = __PACKAGE__->instance_data_index;
my($_D) = b_use('Type.Date');
my($_T) = b_use('Type.Time');
sub as_date_time {
my($self) = @_;
my($fields) = $self->[$_IDI];
return $fields->{tz}->date_time_from_utc($fields->{dt});
}
sub as_literal {
my($self) = @_;
my($dt) = $self->as_date_time;
return $_D->to_string($dt) . ' ' . $_T->to_string($dt);
}
sub from_literal {
b_die('not supported yet');
# DOES NOT RETURN
}
sub new {
my($proto, $date_time, $time_zone) = @_;
my($self) = shift->SUPER::new;
$self->[$_IDI] = {
tz => $time_zone,
dt => $date_time,
};
return $self;
}
sub to_literal {
my(undef, $value) = @_;
return ''
unless $value;
return $value->as_literal;
}
1;