【问题标题】:PHP add colons to a stringPHP在字符串中添加冒号
【发布时间】:2011-06-16 23:15:59
【问题描述】:

您好,我有这个字符串,它将生成我然后插入到数据库中的时间

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

现在我需要在这个字符串中读取冒号::

我需要生成并插入不带冒号,但在另一个地方显示并重新插入冒号,所以它看起来像这样:

13:24:09

代替:

132409

$todaydate = date('Ymd');也是如此

那应该变成2011-06-16

我该怎么做?

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

请指教

谢谢!

对于不了解的人:此值取自数据库,因此我无法使用: date('Y-m-d');在从数据库中获取的值中............

【问题讨论】:

    标签: php count add


    【解决方案1】:

    $todaydate = 日期('Ymd');

    那时应该是 2011-06-16

    对于这个,试试:

    date('Y-m-d');
    

    你的其他部分也是如此。

    编辑 :: 日期:

    $time = "来自数据库的时间"; $unixtimestamp = strtotime ($time) ; $date = date('Y-m-d', $unixtimestamp);

    时间:

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

    【讨论】:

    • 我说我必须从数据库中获取,所以当我展示它时,我还应该阅读双点或中间分数......所以我不能按照你的建议做
    • 将其存储为时间戳或其他与显示无关的格式,并担心在向用户显示时呈现它。
    • 好吧,那是日期……和时间?
    • 好吧,我的和你的一样,但是在这个我们不需要关心数据库中的时间格式,因为 strtotime 会将它带到所需的 unix 时间戳格式。我通常以人类可读的格式将时间存储在数据库中,因此经常使用这种方法。
    【解决方案2】:

    您提供的用于格式化的字符串可以包含您想要的任何内容,因此使用破折号或分号没有问题。您甚至可以包含其他文本,只要日期代码中使用的任何字母都用反斜杠转义即可。

    全部

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

    也可以重写。您正在维护当前时间的时间戳,然后将其提供给date()date 默认使用当前时间,所以不需要显示当前时间。

    这是一种方法:

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

    【讨论】:

    • 小伙伴们不难理解!请仔细阅读以上内容。这些值取自数据库!
    • @DiegoP 你说“你好,我有这个字符串,它将生成我然后插入数据库的时间”。您无法控制插入数据库吗?
    • 当然..但如果我问这个问题,也许我至少有一个理由在插入过程中不这样做......
    【解决方案3】:

    如果您确实按照您所说的做,您可以从末尾开始计算字符并将字符(:-)添加到正确的位置:

    date('is')date('Ymd') 都使用前导零生成固定格式,因此长度始终相同。您只需补偿date('G') 部分。

    所以实际上你所要做的就是将字符串末尾的 2 个字符剪掉两次,剩下的就是年份或小时。

    【讨论】:

      【解决方案4】:

      如果您改用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 );
      

      【讨论】:

        【解决方案5】:

        当您生成要存储在数据库中的值时,请使用 Unix 时间戳:

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

        这样您就不必担心它的外观或解析它的方式。然后,当您准备好向用户显示它时,您可以使用:

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

        它将以冒号(甚至是一个单词?)格式显示给您的用户。

        【讨论】:

          【解决方案6】:

          你不能这样做吗:

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

          【讨论】:

            【解决方案7】:
            $NowisTime=date('G:i:s',$time);
            $todaydate = date('Y-m-d');
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-04-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-05-14
              • 1970-01-01
              相关资源
              最近更新 更多