2009-11-23 88 views
0

得到关于PHP日期函数的一些问题....这不用..PHP的日期功能

我使用jQuery的日期选择器,以得到其格式为“日/月/年”的用户的日期。例如。 2009年11月23日是23/11/2009。

而操纵这是php我用下面的代码...

我日期字符串存储在变量$日期

$dateOf = date ('(d-m-Y)', strtotime($date)); 

我得到的问题是,当我通过之日起字符串到strtotime函数,它将表示月份的数字作为表示日期的数字。

如: 当我给日期24/12/2009 的strtotime将其作为2009/12/24

我不能让我在做什么错在这里...将如果有人高兴清除这件事....

感谢和问候

回答

1

在PHP端,您可以通过此修复程序:

$date = "24/12/2009"; 
$date = preg_replace('/^(\d{1,2})\/(\d{1,2})\/(\d{2,4})$/','\2/\1/\3', $date); 

$dateOf = date ('(d-m-Y)', strtotime($date)); 

这只是交换了第一的位置,第二场比赛以24/12/2009并使其12/24/2009

编辑:

没有正则表达式:

$date = "24/12/2009"; 
$date = explode('/', $date); 
$date = implode('/', array($date[1], $date[0], $date[2])); 

$dateOf = date ('(d-m-Y)', strtotime($date)); 
+0

很酷的工作... :-) 有没有办法没有正则表达式...? – SpikETidE 2009-11-23 06:04:01

+0

我更新了我的答案以显示替代方案。仍然看起来像一个解决方法,是吧? – 2009-11-23 06:08:30

+0

两者都很好...没有任何反对正则表达式...! 我以前使用过这种爆炸技术,但我认为php,它很酷,它将包含在日期函数之一中,为我们节省了额外的代码......! 谢谢大家,宝贵的时间和建议... – SpikETidE 2009-11-23 07:03:27

1

documentation

的函数需要一个包含美国英语DA字符串te格式

在美国,月份必须在日期之前,例如, MM/DD/YYYY

这里有没有正则表达式解决方法:

$date = explode('/', $date); 
$dateOf = date('(d-m-Y)', strtotime($date[1].'/'.$date[0].'/'.$date[2])); 
+0

对不起它“是”的功能,但它的贬值,如果你AREN不使用正则表达式,'爆炸'是首选的方法。 – 2009-11-23 06:11:11

0

strtotime解析英语日期 这里是展示如何做到这一点的例子:

<html> 
<head> 
<title>Php Date Function</title> 
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
<script type="text/javascript" src="jquery.ui.all.packed.js"></script> 
<link rel="stylesheet" src="themes/default/ui.all.css"/> 
<script type="text/javascript"> 
jQuery(document).ready(function($) { 
    $('#dpicker').datepicker({ 
     dateFormat: "dd/mm/yy" 
    }); 
}) 
</script> 
</head> 
<body> 
    <form action="#" method="POST"> 
     <input size="25" readonly="readonly" type="text" value="" id="dpicker" name="dpicker" /> 
     <br/> 
     <input type="submit" id="validBtn" value="OK" name="valid" /> 
    </form> 
    <div> 
    <?php 
     $d = (isset($_POST['dpicker']) ? $_POST['dpicker'] : null); 
     if ($d) { 
      $ds = explode("/", $d); 
      $dte = date('(d-m-Y)', mktime(0, 0, 0, $ds[1], $ds[0], $ds[2])); 
      echo '<p>Date: ' . $dte . '</p>'; 
     } 
    ?> 
    </div> 
</body> 
</html>