Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Rose::DB::Object::MakeUseroContributed PRose::DB::Object::MakeMethods::Time(3)

NAME
       Rose::DB::Object::MakeMethods::Time - Create time-related methods for
       Rose::DB::Object-derived	objects.

SYNOPSIS
	   package MyDBObject;

	   use base 'Rose::DB::Object';

	   use Rose::DB::Object::MakeMethods::Time
	   (
	     interval =>
	     [
	       t1 => { scale =>	6 },
	       t2 => { default => '3 days 6 minutes 5 seconds' },
	     ],

	     time =>
	     [
	       start =>	{ scale	=> 5 },
	       end   =>	{ default => '12:34:56'	},
	     ],
	   );

	   ...

	   $o->t1('5 minutes 0.003 seconds');

	   $dt_dur = $o->t1; # DateTime::Duration object

	   print $o->t1->minutes;    # 5
	   print $o->t1->nanosecond; # 3000000

	   $o->start('12:34:56.12345');

	   print $o->start->nanosecond;	# 123450000
	   print $o->start->as_string;	# 12:34:56.12345

	   $o->end('6pm');

	   $tc = $o->end; # Time::Clock	object

	   print $o->end->hour;	# 18
	   print $o->end->ampm;	# PM

	   print $o->end->format('%I:%M	%p'); #	6:00 PM
	   $o->end->add(hours => 1);
	   print $o->end->format('%I:%M	%p'); #	7:00 PM

DESCRIPTION
       "Rose::DB::Object::MakeMethods::Time" creates methods that deal with
       times, and inherits from	Rose::Object::MakeMethods.  See	the
       Rose::Object::MakeMethods documentation to learn	about the interface.
       The method types	provided by this module	are described below.

       All method types	defined	by this	module are designed to work with
       objects that are	subclasses of (or otherwise conform to the interface
       of) Rose::DB::Object.  In particular, the object	is expected to have a
       db method that returns a	Rose::DB-derived object.  See the
       Rose::DB::Object	documentation for more details.

METHODS	TYPES
       interval
	   Create get/set methods for interval (years, months, days, hours,
	   minutes, seconds) attributes.

	   Options
	       "default"
		   Determines the default value	of the attribute.

	       "end_of_month_mode"
		   This	mode determines	how math is done on duration objects.
		   If defined, the "end_of_month" setting for each
		   DateTime::Duration object created by	this method will be
		   set to the specified	mode.  Otherwise, the "end_of_month"
		   parameter will not be passed	to the DateTime::Duration
		   constructor.

		   Valid modes are "wrap", "limit", and	"preserve".  See the
		   documentation for DateTime::Duration	for a full
		   explanation.

	       "hash_key"
		   The key inside the hash-based object	to use for the storage
		   of this attribute.  Defaults	to the name of the method.

	       "interface"
		   Choose the interface.  The default is "get_set".

	       "scale"
		   An integer number of	places past the	decimal	point
		   preserved for fractional seconds.  Defaults to 0.

	   Interfaces
	       "get_set"
		   Creates a get/set method for	a interval (years, months,
		   days, hours,	minutes, seconds) attribute.  When setting the
		   attribute, the value	is passed through the parse_interval
		   method of the object's db attribute.	 If that fails,	a
		   fatal error will occur.

		   When	saving to the database,	the method will	pass the
		   attribute value through the format_interval method of the
		   object's db attribute before	returning it.

		   This	method is designed to allow interval values to make a
		   round trip from and back into the database without ever
		   being "inflated" into DateTime::Duration objects.  Any use
		   of the attribute (get or set) outside the context of
		   loading from	or saving to the database will cause the value
		   to be "inflated" using the  parse_interval method of	the
		   object's db attribute.

	       "get"
		   Creates an accessor method for a interval (years, months,
		   days, hours,	minutes, seconds) attribute.  This method
		   behaves like	the "get_set" method, except that the value
		   cannot be set.

	       "set"
		   Creates a mutator method for	a interval (years, months,
		   days, hours,	minutes, seconds) attribute.  This method
		   behaves like	the "get_set" method, except that a fatal
		   error will occur if no arguments are	passed.

	   Example:

	       package MyDBObject;

	       use base	'Rose::DB::Object';

	       use Rose::DB::Object::MakeMethods::Time
	       (
		 time =>
		 [
		   't1'	=> { scale => 6	},
		   't2'	=> { default =>	'3 days	6 minutes 5 seconds' },
		 ],
	       );

	       ...

	       $o->t1('5 minutes 0.003 seconds');

	       $dt_dur = $o->t1; # DateTime::Duration object

	       print $o->t1->minutes;	 # 5
	       print $o->t1->nanosecond; # 3000000

       time
	   Create get/set methods for time (hours, minutes, seconds)
	   attributes.	Fractional seconds up to nanosecond precision are
	   supported.

	   Options
	       "default"
		   Determines the default value	of the attribute.

	       "hash_key"
		   The key inside the hash-based object	to use for the storage
		   of this attribute.  Defaults	to the name of the method.

	       "interface"
		   Choose the interface.  The default is "get_set".

	       "scale"
		   An integer number of	places past the	decimal	point
		   preserved for fractional seconds.  Defaults to 0.  The
		   maximum value is 9.

	   Interfaces
	       "get_set"
		   Creates a get/set method for	a time attribute.  When
		   setting the attribute, the value is passed through the
		   parse_time method of	the object's db	attribute.  If that
		   fails, a fatal error	will occur.

		   When	saving to the database,	the method will	pass the
		   attribute value through the format_time method of the
		   object's db attribute before	returning it.

		   This	method is designed to allow time values	to make	a
		   round trip from and back into the database without ever
		   being "inflated" into Time::Clock objects.  Any use of the
		   attribute (get or set) outside the context of loading from
		   or saving to	the database will cause	the value to be
		   "inflated" using the	 parse_time method of the object's db
		   attribute.

	       "get"
		   Creates an accessor method for a time attribute.  This
		   method behaves like the "get_set" method, except that the
		   value cannot	be set.

	       "set"
		   Creates a mutator method for	a time attribute.  This	method
		   behaves like	the "get_set" method, except that a fatal
		   error will occur if no arguments are	passed.

	   Example:

	       package MyDBObject;

	       use base	'Rose::DB::Object';

	       use Rose::DB::Object::MakeMethods::Time
	       (
		 time =>
		 [
		   start => { scale => 5 },
		   end	 => { default => '12:34:56' },
		 ],
	       );

	       ...

	       $o->start('12:34:56.12345');

	       print $o->start->nanosecond; # 123450000
	       print $o->start->as_string;  # 12:34:56.12345

	       $o->end('6pm');

	       $tc = $o->end; #	Time::Clock object

	       print $o->end->hour; # 18
	       print $o->end->ampm; # PM

	       print $o->end->format('%I:%M %p'); # 6:00 PM
	       $o->end->add(hours => 1);
	       print $o->end->format('%I:%M %p'); # 7:00 PM

AUTHOR
       John C. Siracusa	(siracusa@gmail.com)

LICENSE
       Copyright (c) 2010 by John C. Siracusa.	All rights reserved.  This
       program is free software; you can redistribute it and/or	modify it
       under the same terms as Perl itself.

perl v5.24.1			  2015-0Rose::DB::Object::MakeMethods::Time(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS TYPES | AUTHOR | LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Rose::DB::Object::MakeMethods::Time&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help