2011-10-04 60 views
2

我正在使用Zend和Doctrine并使用jQuery日历以dd/mm/yyyy格式收集日期。我需要格式化它以yyyy/mm/dd形式输入MySql。使用Zend和Doctrine的日期格式

我最近开始使用Zend和Doctrine,所以不知道这个格式应该在哪里以及如何完成。可以请别人帮我吗?

回答

1

我劝你jQuery的datepiker使用这种可能性与意大利的定位,才能有在意大利的日历,但设置的格式datepiker YYYY-MM-DD,所以我在将数据保存在数据库中的任何更改都没有问题。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/i18n/jquery.ui.datepicker-it.js"></script> 

//DatePicker 
$('.inputDate').datepicker({ 
    dateFormat: 'yy-mm-dd' 
}); 

OR

现在它发生,我认为如果你坚持你的选择,你可以使用原则的行为:http://www.doctrine-project.org/blog/using-behaviors-to-share-relationship-properties

看的例子setPassword。

您可以实现这样的事情:

class NameModel extends BaseNameModel 
{ 
    public function setDate_name($date_name) 
    { 
     list($d, $m, $y) = explode("-", $date_name); 
     $newDateName = $y."-".$m."-".$d; 
     $this->_set('date_name', $newDateName); 
    } 
} 
+0

这是可能的,但我不希望日期在输入字段中显示为yyyy-mm-dd。我想要一个更友好的dd/mm/yyyy类型然后格式化它。 – FFSS

+0

这些都是设计选择,我喜欢你有一个意大利开发人员使用zend和教条,我所描述的是我的选择。 我认为,当用户使用弹出式日历不注意存储在输入字段中的值。 – JellyBelly

+0

添加另一种方法! ;) – JellyBelly

0

我给你的PHP函数将采取日期为dd/mm/yyyy并返回yyyy/mm/dd日期。

function dateconvert($dateOriginal) 
{ 
    $dateOriginal = preg_replace("/[^0-9\/]/","",$dateOriginal); //sanitizing 
    $temp = explode("/",$dateOriginal); 
    $dateNew = $temp[2]."-".$temp[1]."-".$temp[0]; 
    $dateNew = date("Y-m-d", strtotime($dateNew)); 
    return $dateNew; 
} 
0

我不认为你需要Zend Framework或Doctrine来做到这一点。你可以只写类似于以下,使用正则表达式:

$output = preg_replace('#(\d+)/(\d+)/(\d+)#', '\3/\2/\1', $jQueryInput); 

如果你想要一个不那么“立竿见影”的解决方案(即,更可扩展),你也可以使用一个date/strtotime组合。

希望帮助,

+0

我的问题是应该的日期被重新格式化什么样的水平?使用Zend Controller或Doctrine Model? – FFSS

+0

在这里,您可以在Doctrine模型级别重新格式化数据:http://stackoverflow.com/questions/3216586/doctrine-change-date-format-when-getting-and-setting-field-values。你也可以在Zend控制器中自己做,并以正确的格式将值传递给Doctrine。 – dinopmi