mem
(Talofo)
July 3, 2012, 11:40pm
1
Hello again,
Can I please ask your help in order to find the proper method to use on this workflow:
[size="5"]
1)[/size]
The user inserts a date using the following format: dd/mm/yyyy
That date is inserted into the mySQL table date field type as: yyyy/mm/dd
So, and please correct me if I’m wrong, we need to transform the date format from dd/mm/yyyy to [i]yyyy/mm/dd
[/i]
Question 1)
What yii method (if any) should we use ?
[size="5"]2)[/size]
When we display the date back to the user we should displayed in two ways according to the model or controller in question:
[size="4"]2.1)[/size]
On an update form field or any other edit operation, it should appear as:
dd/mm/yyyy
Question 2.1)
I believe this would be the same method as used in 1 ?
[size="4"]2.2)[/size]
On other views it should:
[size="3"]2.2.1)[/size] split the day and the month.
Question 2.2.1
What method can we use to split it ?
[size="3"] 2.2.2)[/size]
The day should be in numbers;
[size="3"] 2.2.3)[/size]
The month should be full name (ie. January) but translated (ie. Janvier)
Question 2.2.3
What method can we use to, from the above, return the full month name on a given
language?
I don’t need a full example with all the job done but, at least a finger pointer to specific methods then would help me have the job done please.
Thanks in advance,
mem
before u save use like this
$model->ur-attribute-date=date('Y-m-d',strtotime($model->ur-attribute-date));
1st issue solved.
to display this date use reverse method.
use date(‘Y’,strtotime($model->ur-attribute-date)); - for Year
like for month date(‘m’,strtotime($model->ur-attribute-date));
if u need to translate, use check for translate components and add t() function.
Bianca
(Biancajsen)
July 4, 2012, 5:50am
4
before u save use like this
$model->ur-attribute-date=date('Y-m-d',strtotime($model->ur-attribute-date));
1st issue solved.
to display this date use reverse method.
Hi Rajith,
I need to compare 2 dates: one taken from mysql table (so in the format yyyy-mm-dd) and the other one is a string retrieved from an input in a form but the format is still yyyy-mm-dd. How do I compare the 2 dates?
Thanks
using
date('Y-m-d',strtotime($model->ur-attribute-date));
this u can convert it to any format … and compare simply using ’ =, <, > ’ …
use like this
if(strtotime($date->target_date)>=strtotime($list['Date']))
or
if(strtotime($date->target_date)=strtotime($list['Date']))
or
if(strtotime($date->target_date)<strtotime($list['Date']))
Bianca
(Biancajsen)
July 4, 2012, 11:10am
7
Thanks Rajith,
My problem is that I am using it in the model->find() method and here I cannot use strtotime since it is php. How to solve this?
so write as criteria
$criteria->condition=$criteria->condition.' and '.'date_of_birth > :date_of_birth';
$criteria->params[':date_of_birth'] = date('Y-m-d',strtotime($_REQUEST['Students']['date_of_birth']));
so u just need to check equal to ?? right… so change one others format… using strtotime…then use in find()…
mem
(Talofo)
July 4, 2012, 3:46pm
10
@Jimlam : Please don’t exploit others post. Create your own post for your own doubts. Things get clear this way.
@All :
To retrieve the day and the month I’ve used two methods on the model:
/**
* @desc Given a string, '2012-12-02' returns the day: '02'
* @param string $date
* @return string
*/
public function getDay($date){
return yii::app()->dateFormatter->format('dd', $date);
}
/**
* @desc Given a string, '2012-12-02' returns the month: 'December'
* @param string $date
* @return string
*/
public function getMounth($date){
return yii::app()->dateFormatter->format('MMMM', $date);
}
The date is inserted into the database as yyyy-mm-dd like this:
Let’s say: 06/11/2016
protected function beforeSave ()
{
if(!empty($this->date))
{
list($d, $m, $y) = explode('/', $this->date);
$mk=mktime(0, 0, 0, $m, $d, $y);
$this->date = date ('Y-m-d', $mk);
}
return parent::beforeSave ();
}
On my form (update) I’m getting this:
20/16/1106
How can I fix this ?
Bianca
(Biancajsen)
July 4, 2012, 5:43pm
11
mem:
@Jimlam : Please don’t exploit others post. Create your own post for your own doubts. Things get clear this way.
@All :
To retrieve the day and the month I’ve used two methods on the model:
/**
* @desc Given a string, '2012-12-02' returns the day: '02'
* @param string $date
* @return string
*/
public function getDay($date){
return yii::app()->dateFormatter->format('dd', $date);
}
/**
* @desc Given a string, '2012-12-02' returns the month: 'December'
* @param string $date
* @return string
*/
public function getMounth($date){
return yii::app()->dateFormatter->format('MMMM', $date);
}
The date is inserted into the database as yyyy-mm-dd like this:
Let’s say: 06/11/2016
protected function beforeSave ()
{
if(!empty($this->date))
{
list($d, $m, $y) = explode('/', $this->date);
$mk=mktime(0, 0, 0, $m, $d, $y);
$this->date = date ('Y-m-d', $mk);
}
return parent::beforeSave ();
}
On my form (update) I’m getting this:
20/16/1106
How can I fix this ?
@mem : Sorry, I meant no harm. Since I was having a sort of similar problem, I thought it could be beneficial to all those concerned. Anyway, I have up to now noticed a very friendly and helpful attitude from all those who contribute to this community. My sincere apologies for having ‘exploited’ your post.
BTW, I think your problem could be solved by including in your model an afterFind() method, thus:
protected function afterFind ()
{
if($this->date <> '')
{
// mise en forme de date
list($y, $m, $d) = explode('/', $this->date);
$mk=mktime(0, 0, 0, $m, $d, $y);
$this->date = date ('d/m/Y', $mk);
return parent::afterFind ();
}
Hope it helps