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

FreeBSD Manual Pages


home | help
Jifty::DateTime(3)    User Contributed Perl Documentation   Jifty::DateTime(3)

       Jifty::DateTime - a DateTime subclass that knows	about Jifty users

	 use Jifty::DateTime;

	 # Get the current date	and time
	 my $dt	= Jifty::DateTime->now;

	 # Print out the pretty	date (i.e., today, tomorrow, yesterday,	or 2007-09-11)
	 Jifty->web->out( $dt->friendly_date );

	 # Better date parsing
	 my $dt_from_human = Jifty::DateTime->new_from_string("next Saturday");

       Jifty natively stores timestamps	in the database	in GMT.	 Dates are
       stored without timezone.	This class loads and parses dates and sets
       them into the proper timezone.

       To use this DateTime class to it's fullest ability, you'll need to add
       a "time_zone" method to your application's user object class. This is
       the class returned by "user_object" in Jifty::CurrentUser. It must
       return a	value valid for	using as an argument to	DateTime's
       "set_time_zone()" method.

   new ARGS
       See "new" in DateTime. If we get	what appears to	be a date, then	we
       keep this in the	floating datetime. Otherwise, set this object's
       timezone	to the current user's time zone, if the	current	user's user
       object has a method called "time_zone".

   now ARGS
       See "now" in DateTime. If a time_zone argument is passed	in, then this
       wrapper is effectively a	no-op.

       OTHERWISE this will always set this object's timezone to	the current
       user's timezone.	Without	this, DateTime's "now" will set	the timezone
       to UTC always (by passing "time_zone => 'UTC'" to
       "Jifty::DateTime::new". We want Jifty::DateTime to always reflect the
       current user's timezone (unless otherwise requested, of course).

   from_epoch ARGS
       See "from_epoch"	in DateTime and	"now" in Jifty::DateTime. This handles
       the common mistake of "from_epoch($epoch)" as well.

   current_user	[CURRENTUSER]
       When setting the	current	user, update the timezone appropriately.

       If an "undef" current user is passed, this method will find the correct
       current user and	set the	time zone.

       Return timezone if the current user has one. This is determined by
       checking	to see if the current user has a user object. If it has	a user
       object, then it checks to see if	that user object has a "time_zone"
       method and uses that to determine the value.

   set_current_user_timezone [DEFAULT_TZ]
   set_current_user_time_zone [DEFAULT_TZ]
       Set this	Jifty::DateTime's timezone to the current user's timezone. If
       that's not available, then use the passed in DEFAULT_TZ (or GMT if not
       passed in).  Returns the	Jifty::DateTime	object itself.

       If your subclass	changes	this method, please override
       "set_current_user_timezone" not "set_current_user_time_zone", since the
       latter is merely	an alias for the former.

   new_from_string STRING[, ARGS]
       Take some user defined string like "tomorrow" and turn it into a
       "Jifty::Datetime" object. If a "time_zone" argument is passed in, that
       is used for the input time zone.

       If the string appears to	be a _date_, the output	time zone will be
       floating.  Otherwise, the output	time zone will be the current user's
       time zone.

       As of this writing, this	uses Date::Manip along with some internal
       hacks to	alter the way Date::Manip normally interprets week day names.
       This may	change in the future.

       Returns the date	given by this "Jifty::DateTime"	object.	It will
       display "today" for today, "tomorrow" for tomorrow, or "yesterday" for
       yesterday. Any other date will be displayed in "ymd" format.

       We currently shift by "24 hours"	to detect yesterday and	tomorrow,
       rather than "1 day" because of daylight saving issues. "1 day" can
       result in invalid local time errors.

       Returns whether or not this "Jifty::DateTime" object represents a date
       (without	a specific time). Dates	in Jifty are in	the floating time zone
       and are set to midnight.

       Returns the offset for a	time zone. If there is no current user,	or the
       current user's time zone	is unset, then UTC will	be used.

       The optional datetime argument lets you calculate an offset for some
       time other than "right now".

       This returns a DateTime (or string) consistent with Jifty's date

       There are other ways to do some of these	things and some	of the
       decisions here may seem arbitrary, particularly if you read the code.
       They are.

       These things are	valuable to applications built by Best Practical
       Solutions, so it's here.	If you disagree	with the policy	or need	to do
       it differently, then you	probably need to implement something yourself
       using a DateTime::Format::* class or your own code.

       Parts may be cleaned up and the API cleared up a	bit more in the

       DateTime, DateTime::TimeZone, Jifty::CurrentUser

       Jifty is	Copyright 2005-2010 Best Practical Solutions, LLC.  Jifty is
       distributed under the same terms	as Perl	itself.

perl v5.32.1			  2015-04-30		    Jifty::DateTime(3)


Want to link to this manual page? Use this URL:

home | help