Hi!
I would like to set a default value for Date-DataType. Like the "Current Date" or "Current Date + 2 Days"...
How can I achieve this?
Cheers,
Malte
This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.
Please use forum.silverstripe.org for any new questions
(announcement).
The forum archive will stick around, but will be read only.
You can also use our Slack channel
or StackOverflow to ask for help.
Check out our community overview for more options to contribute.
Hi!
I would like to set a default value for Date-DataType. Like the "Current Date" or "Current Date + 2 Days"...
How can I achieve this?
Cheers,
Malte
Hiya,
Presuming your field is called 'Date':
$default = array('Date' => strtotime('now + 2 days'));
This should set the date to be today + 2 when looking through the CMS.
Cheers,
Josh
Don't think that is quite right.
Looking at the Date class:
1. if it is an array (keyed Day, Month and Year) it will set the date with these values
2. Otherwise, it will try to set from a string by:
2a. if the date is in the form xx/xx/xxxx it will 'fix' this from NZ/euro d/m/y dates to US m/d/y date string.
2b. it will execute strtotime and set the value as the 'Y-m-d' string.
So, the following options should all set the date to the first of july 09:
$default = array('Date' => array('Year' => 2009, 'Month' => '5', 'Day' => 1));
$default = array('Date' => "1st July 2009");
$default = array('Date' => "01/05/2009");
So for your example (and reading from http://jp2.php.net/manual/en/function.strtotime.php) you should do:
$default = array('Date' => "+ 2 days");
Hint: If you use SSDatetime as Data type, it is enough to use:
'Date' => 'now'
Anything that is recognised by strtotime will work.
See the GNU Date Input Formats for valid strings.
Hi,
I cannot get this to work with any of the above answers in a SS 3.0.1 project and a SS_Datetime field.
Best regards
Landed here off of a frustrating set of Google searches looking for ways to do math on Date and SS_DateTime fields. And what was done in here works for me but I had to do it differently in 3.2. Just override populateDefaults() in your DataObject:
public function populateDefaults() {
$this->MyDateField = DBField::create_field('Date', 'now');
$this->MyFutureDate = DBField::create_field('Date', 'now + 1 month');
parent::populateDefaults();
}