package Data::Plist::Foundation::NSDate; use strict; use warnings; use base qw/Data::Plist::Foundation::NSObject DateTime/; sub replacement { my $self = shift; my $dt = DateTime->from_epoch( epoch => $self->{"NS.time"} + 978307200 ); bless $dt, ( ref $self ); return $dt; } sub serialize_equiv { my $self = shift; my $secs = ( $self->epoch - 978307200 ); $secs += $self->nanosecond / 1e9; $secs .= ".0" unless $secs =~ /\D/; # This forces it to be stored as "real" return { "NS.time" => $secs }; } 1;