2011-06-16 80 views
0

你好,我有这个字符串,将产生一次,我则在数据库中插入PHP加冒号为字符串

$time=mktime(date('G'),date('i'),date('s')); 
$NowisTime=date('Gis',$time); 

现在我需要重新进行添加冒号这个字符串::

我需要它产生并没有冒号插入,但显示在用冒号另一个地方重新插入,这样它看起来就像这样:

13:24:09 

相反的:

132409 

这同样适用于$todaydate = date('Ymd');

这应该成为然后2011-06-16

我怎么能这样做?

计算单词并不好,因为根据实际的时间和日期我们可以有更多或更少的类型。

请告知

谢谢!

对于谁不明白:这个值取自DB,所以我不能使用:date('Y-m-d');在一个数值取自db ........

回答

1

同样是为$ todaydate = date('Ymd');

这应该成为然后2011-06-16

对于这一个,试试:

date('Y-m-d'); 

您的其他部分类似。

编辑:: 对于日期:

$时间= “从数据库时间”; $ unixtimestamp = strtotime($ time); $ date = date('Y-m-d',$ unixtimestamp);

对于时间:

$time = strtotime("time from database"); 
$yourtime = date("H:i:s", $time); 
+0

我说我必须从数据库中拿这个,所以当我展示它的时候我也应该读取双点或中间分数......所以我不能按照你的建议去做 – 2011-06-16 23:21:41

+0

对不起,编辑我的答案。 – Pheonix 2011-06-16 23:23:34

+0

将其存储为时间戳或其他与显示无关的格式,并担心在向用户显示时呈现它。 – Problematic 2011-06-16 23:24:35

1
$NowisTime=date('G:i:s',$time); 
$todaydate = date('Y-m-d'); 
2

您提供格式化可以包含任何你喜欢的话,那么把破折号或分号是没有问题的字符串。只要日期代码中使用的任何字母都用反斜杠转义,您甚至可以包含其他文本。

整个

$time=mktime(date('G'),date('i'),date('s')); 
$NowisTime=date('Gis',$time); 

可以改写了。你正在从当前时间点出一个时间戳,然后给它date()date默认使用当前时间,因此不需要显示当前时间。

这里有一种方法:

$NowisTime=date('G:i:s'); 
+0

伙计们不难理解!请仔细阅读以上内容。这些值取自DB! – 2011-06-16 23:25:02

+0

@DiegoP你说:“你好,我有这个字符串,将生成我然后插入数据库中的时间”。你不能控制插入数据库吗? – Cole 2011-06-16 23:27:54

+0

当然..但是,如果我问这个问题,也许我至少有一个理由,在插入过程中不这样做...... – 2011-06-16 23:28:55

2

如果你正在做的正是你说你在做什么,你可以指望从末端开始的字符,并在合适的地方添加字符(:-):

date('is')date('Ymd')都使用前导零产生固定格式,所以长度始终相同。你只需要补偿date('G')部分。

所以,你所要做的就是从字符串的末尾砍掉两个字符两次,剩下的就是一年或一小时。

2

那么,如果你使用date('his'),而不是和投下它作为一个字符串(所以PHP不把它解释为一个整数,并删除可能导致零),您可以通过拆分每两个数字的字符串,然后它的内爆加冒号与冒号。

$d = (string)date('his'); 
echo (int)$d; //Format without colons 
echo implode(':', array_map('intval', str_split($d, 2))); 

对于第二部分,做同样的除了由4个字符分割字符串,然后通过2

$d = date('Ymd'); 
echo $d; //Format without dashes 
list($year, $second) = str_split($d, 4); 
$parts = str_split($second); 
array_unshift($parts, $year); 
echo implode('-', $parts); 

分裂第二分割在这两种情况下然而这将是更容易从格式化的字符串开始(使用冒号和破折号),并将它们移除到数据库中。

$d = date('G:i:s'); 
echo $d; //With colons 
echo str_replace(':', '', $d); 

$d = date('Y-m-d'); 
echo $d; //With dashes 
echo str_replace('-', '', $d); 
2

你不能做这样的事情:

$new = ""; 
for ($i = 2; $i <= strlen($NowisTime); $i+2) { 
    $new .= $NowisTime[$i-2] . $NowisTime[$i-1] . ":"; 
} 
2

当你产生价值在数据库中存储,使用Unix时间戳:

$timestamp = time(); 
// store $timestamp in your database 

这样,你不要不必担心它看起来或解析它。然后,当你准备把它显示给你的用户,你可以使用:

$formattedTime = date('G:i:s', $timestamp); 

将在colonated显示它(是,即使一个字?)为您的用户格式。