PHP Zend日期格式
我想在数据库中输入以下格式的时间戳PHP Zend日期格式,php,zend-framework,date,zend-date,formatdatetime,Php,Zend Framework,Date,Zend Date,Formatdatetime,我想在数据库中输入以下格式的时间戳 yyyy-mm-dd hh:mm:ss 如何获得上述格式? 当我使用 $date = new Zend_Date(); 它返回月日、年日hh:mm:ss PM 我还使用JavaScript日历插入所选日期,并以dd-mm-yyyy格式返回 现在,我想将这两种格式转换为yyyy-mm-dd-hh:mm:ss,以便可以插入到数据库中由于日期格式与数据库字段格式不匹配,因此不会插入日期,而只填充*00-00-00 00:00:00* 感谢您的回答不确定这是否对您
yyyy-mm-dd hh:mm:ss
如何获得上述格式?
当我使用
$date = new Zend_Date();
它返回月日、年日hh:mm:ss PM
我还使用JavaScript日历插入所选日期,并以dd-mm-yyyy格式返回
现在,我想将这两种格式转换为yyyy-mm-dd-hh:mm:ss,以便可以插入到数据库中由于日期格式与数据库字段格式不匹配,因此不会插入日期,而只填充*00-00-00 00:00:00*
感谢您的回答不确定这是否对您有帮助,但请尝试使用:
// to show both date and time,
$date->get('YYYY-MM-dd HH:mm:ss');
// or, to show date only
$date->get('YYYY-MM-dd')
从技术上讲,@stefgosselin给出了Zend_Date,但仅仅以一种通用格式获取当前时间,这完全是矫枉过正<与PHP的原生日期相关扩展相比,code>Zend_Date的速度非常慢,使用起来也非常麻烦。如果您的
Zend_Date
输出中不需要翻译或本地化(而且您显然不需要),请远离它
用于那个,例如
echo date('Y-m-d H:i:s');
或
或
不要因为Zend框架提供了每个组件而使用它,这是一个常见的错误。完全没有必要这样做,事实上,如果您可以使用本机PHP扩展以较少或类似的努力实现相同的结果,那么使用本机解决方案会更好
另外,如果要在数据库中保存日期,是否使用了以下选项之一?假设您使用的是MySql,您可以使用时间戳列或ISO8601日期列。我就是这样做的:
abstract class App_Model_ModelAbstract extends Zend_Db_Table_Abstract
{
const DATE_FORMAT = 'yyyy-MM-dd';
public static function formatDate($date, $format = App_Model_ModelAbstract::DATE_FORMAT)
{
if (!$date instanceof Zend_Date && Zend_Date::isDate($date)) {
$date = new Zend_Date($date);
}
if ($date instanceof Zend_Date) {
return $date->get($format);
}
return $date;
}
}
通过这种方式,您不需要关心它是否实际上是zend date的实例,您可以传递一个字符串或任何其他日期 使用Zend Date的一个简单方法是在其业务对象中创建特定函数,该函数允许将此函数参数化为日期格式。你可以找到这个地址的一个很好的例子这是我做的:
Zend_Date::now->toString('dd-MM-yyyy HH:MM:ss')
此格式的输出为“24-03-2012 13:02:01”
您可以修改日期格式我一直使用
$date->\uu-toString('YYYY-MM-dd HH-MM ss')代码>方法在过去但今天不起作用。我得到的默认输出是“2013年11月1日下午12:19:23”
所以今天我使用了$date->get('YYYY-MM-dd HH-MM-ss')代码>如上所述。似乎已经解决了我的问题
您可以在此处的输出格式中找到更多信息:您是否使用Zend_Date
来表示其他内容?或者你只是想用它来格式化一个时间戳?在询问之前你是否参考了手册@是的,我参考了手册,但我找到了这个2009-02-13T12:53:27+01:00。我不想让“t”和“+”在两者之间登录。@戈登:我用zend_date()来获取当前日期。谢谢。它可以工作$date=new Zend_date();$createdDate=$date->get('yyyyy-MM-dd HH:MM:ss');打印($createdDate)
@maniclon如果一个答案解决了你的问题,那么接受给定的答案被认为是礼貌的。我从一个文本框中得到了一个日期数据,格式类似于$formData['startdate']
,是dd-mm-yy格式。现在,如何使用上述代码或任何其他技术转换为该格式?对于圣诞节之后的日期,您可能会得到奇怪的YYYY结果,最好使用YYYY MM dd…这让我有些为难。使用yyyy,而不是yyyy,除非您明确了解不使用的原因。如果你不这样做的话,你会在一年的最后几天得到任意错误的日期!我赞成!;)戈登总是知道得最好。@Gorden:我知道了。但是我想在date\u格式(date\u create(),'Y-m-dh:I:s')的第一个参数中使用$formData['startdate']
的数组值代码>。i、 e.代替日期_create()。@maniclon抱歉,我不会告诉你怎么做。使用日期是PHP开发人员的基本知识。我真的没有冒犯你的意思,但是如果你不知道怎么做,你不应该使用Zend框架,而应该首先掌握PHP的基础知识。请按照文档的链接,尝试了解您自己。这很简单,学习如何操作是绝对必要的。日期操作的最终答案是date('Y-m-d',strotime($nearlyAnyNormalDateFormat))
@stefgosselin在我看来,当框架不能提供比本机API更大的好处时,应该避免使用框架。好处是可读性、易用性、性能或开发速度等。至于意大利面代码:不。仅仅因为您使用本机API并不意味着它将是意大利面代码。意大利面代码总是由人编写的。使用框架编写意大利面代码也是完全可能的。“允许将此函数参数化为日期格式”是相当不清楚的。你能重新措辞吗?另外,欢迎来到StackOverflow!
$dateTime = new DateTime;
echo $dateTime->format('Y-m-d H:i:s');
abstract class App_Model_ModelAbstract extends Zend_Db_Table_Abstract
{
const DATE_FORMAT = 'yyyy-MM-dd';
public static function formatDate($date, $format = App_Model_ModelAbstract::DATE_FORMAT)
{
if (!$date instanceof Zend_Date && Zend_Date::isDate($date)) {
$date = new Zend_Date($date);
}
if ($date instanceof Zend_Date) {
return $date->get($format);
}
return $date;
}
}