I use srttotime() and pass the result to date() using format 'c' in
PHP5 or 'Y-m-d' in PHP4 viz:
    date('Y-m-d', strtotime($date))
$date will need to be formatted like "10 September 2000" - I don't
think the month number will work, but look at the PHP manual for more
info.

This code I use in the controller::edit or controller::add functions
like:
                if (!empty($this->data)) {
                        $this->data['Event']['start_date'] = date
('c' ,strtotime($this->data['Event']['start_date']));
                --snip--

On Jan 20, 4:25 pm, Ernesto <[email protected]> wrote:
> Hello.
>
> i'm writing an app for my little business. i'm using CakePHP + MySQL.
>
> My problem are the DB fields formatted in US way. For example
> - dates in MySQL must be written "YYYY-MM-DD" when we usually use "DD/
> MM/YYYY".
> - US float notation uses dot (.) instead of comma (,) as decimal
> separator.
>
> i wrote some code to resolve that "issue" in both ways (read/save) but
> i'm getting some errors, especially on related models.
>
> @@ here's my DB schema
>
> Person --> HABTM (persons_articles) --> Article --> BELONGSTO -->
> Article_code
>
> @@ here's the error
>
> Article_code contains a "datetime" field (Article_code.Created).
>
> when the page //Cake/persons/details is loaded the
> Article_code.Created gets formatted many times.
>
> @@ here's the incriminated code:
>
> class AppModel extends Model {
>
>         function afterFind($results, $primary = false) {
>                 //the code in this function can be found at
>                 
> //http://groups.google.com/group/cake-php/browse_thread/thread/
> 32ab9f8baed4a05a/062678e92b080f18
>                 //i just renamed the "doAfterFind" function to "stdFormat"
>                 //thx @ the original author of that code.
>         }
>
>         function beforeSave() {
>                 //i convert the data from EU to US so i can save data in 
> database
>                 $this->data = $this->stdFormat($this->data, "ITAtoUS);
>                 return true;
>
>         }
>
>         function stdFormat($data, $format) {
>                 //standard formats, applied to every field of every model.
>                 //this function works on flat arrays (field => value)
>                 foreach ($data as $fieldName => &$value) {
>                         if ($this->hasField($fieldName)) {
>                                 switch ($this->getColumnType($fieldName)) {
>                                         case "datetime":
>                                                 list($date, $time) = 
> explode(" ", $value);
>                                         case "date":
>                                                 switch ($format) {
>                                                         case "UStoITA"
>                                                                 list($y, $m, 
> $d) = explode("-", $data);
>                                                                 $value = 
> trim("$d/$m/$y $time");
>                                                         break;
>                                                         case "ITAtoUS":
>                                                                 list($g, $m, 
> $a) = explode("/", $data);
>                                                                 $value = 
> trim("$y-$m-$d $time");
>                                                         break;
>                                                 }
>                                         break;
>                                         case "float":
>                                                 switch ($format) {
>                                                         case "UStoITA":
>                                                                 //sostituisco 
> il separatore decimale (da punto a virgola)
>                                                                 $value = 
> str_replace(".", ",", $value);
>                                                         break;
>                                                         case "ITAtoUS":
>                                                                 $value = 
> str_replace(",", ".", $value);
>                                                         break;
>                                                 }
>                                         break;
>                                 }
>                         }
>                 }
>                 $data = modelFormat($data, $format);
>                 return $data;
>         }
>
>         function modelFormat($data, $format) {
>                 //placeholder
>                 //this function is designed to be overwritten in models
>                 //this function must contain all the model's formats
>                 return $data;
>         }
>
> }
>
> PS: Any idea on how to clean up/simplify that code is welcome :)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to