source

PHP를 사용하여 MySQL datetime에서 다른 형식으로 변환

goodcode 2022. 10. 26. 21:47
반응형

PHP를 사용하여 MySQL datetime에서 다른 형식으로 변환

는 나나 a a a가 있다datetime컬럼을 표시합니다.

PHP를 사용하여 mm/dd/yy H:M(AM/PM)으로 디스플레이로 변환하려면 어떻게 해야 합니까?

날짜를 MySQL 형식으로 정규화하는 방법을 찾는 경우 다음을 사용하십시오.

$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );

" " "$phpdate = strtotime( $mysqldate )는 문자열을 받아들여 일련의 휴리스틱을 실행하여 해당 문자열을 Unix 타임스탬프로 변환합니다.

" " "$mysqldate = date( 'Y-m-d H:i:s', $phpdate )는 타임스탬프와 PHP 함수를 사용하여 타임스탬프를 MySQL의 표준 날짜 형식으로 되돌립니다.

(편집자 주:이 답변이 여기에 있는 이유는 기존의 질문에 혼란스러운 표현을 사용한 독창적인 질문 때문입니다.이 답변은 현재 존재하는 질문에 직접 답변하지 않더라도 구글이 제공한 일반적인 유용성입니다.)

요청된 (MySQL)으로합니다.mm/dd/yy H:M (AM/PM)

// $datetime is something like: 2014-01-31 13:05:59
$time = strtotime($datetimeFromMysql);
$myFormatForView = date("m/d/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM

형식을 조정하려면 PHP 날짜 형식 옵션을 참조하십시오.

PHP 5를 사용하는 경우,

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
$valid_date = date( 'm/d/y g:i A', strtotime($date));

레퍼런스: http://php.net/manual/en/function.date.php

마지막으로 PHP 5.3 이상에 적합한 솔루션: (옵션의 타임존을 코멘트에 기재된 예에 추가)

타임존 없음:

$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');

타임 존 포함:

$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date, new \DateTimeZone('UTC'));
$date->setTimezone(new \DateTimeZone('Europe/Berlin'));
echo $date->format('m/d/y h:i a');

보다 쉬운 방법은 PHP 대신 MySQL 쿼리에서 직접 날짜를 포맷하는 것입니다.DATE_FORMAT에 대한 MySQL 수동 항목을 참조하십시오.

PHP로 하고 싶다면 날짜 함수가 필요하지만 먼저 데이터베이스 값을 타임스탬프로 변환해야 합니다.

다 잊어버려.사용방법:

$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))

「」의 을 실시하려면 , 「」DateTimeMySQL에 저장하기 위한 PHP의 개체는 MySQL이 사용하는 표준화된 형식인 ISO 8601을 사용합니다.

PHP는 버전 5.1.1부터 이 형식을 상수로 저장해 두었습니다.따라서 매번 문자열을 수동으로 입력하는 것보다 이 형식을 사용하는 것을 강력히 권장합니다.

$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);

이 목록 및 기타 PHP DateTime 상수 목록은 http://php.net/manual/en/class.datetime.php#datetime.constants.types에서 확인할 수 있습니다.

SQL 쿼리의 필드 형식을 지정해야 합니다.

SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename

날짜 함수를 사용합니다.

<?php
    echo date("m/d/y g:i (A)", $DB_Date_Field);
?>

MySQL datetime 구성에 따라 달라집니다.통상: 2011-12-31 07:55:13 형식.이 매우 단순한 함수가 마법을 부릴 것입니다.

function datetime()
{
    return date( 'Y-m-d H:i:s', time());
}

echo datetime(); // display example: 2011-12-31 07:55:13

아니면 조금 더 진행해서 질문에 맞출 수도 있어요.

function datetime($date_string = false)
{
    if (!$date_string)
    {
        $date_string = time();
    }
    return date("Y-m-d H:i:s", strtotime($date_string));
}
SELECT 
 DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
 DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo

PHP 코드의 모든 함수를 변경하지 않고 예상 날짜 형식을 표시하려면 소스, 즉 데이터베이스에서 변경하십시오.

위의 예시와 같이 as 연산자를 사용하여 행의 이름을 지정하는 것이 중요합니다(dateFrom, dateEntil).여기에 쓰는 이름이 이름이고, 결과에서 행이 호출됩니다.

이 예의 출력은 다음과 같습니다.

[날짜, 숫자(0.31)][월명 (1월)]12월)][년, 숫자, 네 자리]

예: 5.2015년 8월

선택한 구분 기호로 점을 변경하고 DATE_FORMAT(날짜, 형식) 함수에 더 많은 날짜 형식을 확인합니다.

쿼리를 통해 시간을 Unix 타임스탬프로 반환할 수도 있습니다.그럼 전화할 필요가 없어질 거야strtotime()PHP측에서 좀 덜 집중적인 작업을 하도록 하겠습니다.

select  UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;

그러면 PHP에서는 그냥date()원하는 대로 포맷할 수 있습니다.

<?php
  echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>

또는

<?php
  echo date('F j, Y, g:i a', $row->unixtime);
?>

MySQL을 사용하는 것보다 이 방법을 더 좋아합니다.DATE_FORMAT동일한 쿼리를 재사용하여 데이터를 가져올 수 있고 PHP의 형식을 변경할 수 있기 때문입니다.

UI에서 날짜 표시 방식을 변경하기 위해 두 개의 서로 다른 쿼리를 사용하는 것은 성가신 일입니다.

Unix Timestamp에서 반환되지 않은 날짜로 인해 문제가 발생할 수 있습니다.그래서 저는...

return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))

이거면 될 거야...

echo date('m/d/y H:i (A)',strtotime($data_from_mysql));

PHP 버전 4.4.9와 MySQL 5.0을 사용하면 다음과 같이 동작합니다.

$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate

PubDate는 MySQL의 컬럼입니다.

제가 제안하는 접근방식은 다음과 같습니다.먼저 mysql 형식의 문자열에서 기본 datetime 개체를 만든 다음 원하는 형식으로 형식을 지정합니다.다행히 mysql datetime은 ISO8601에 준거하고 있기 때문에 코드 자체는 매우 심플하고 우아해 보일 수 있습니다.단, 명심하십시오.datetime컬럼에 시간대 정보가 없으므로 적절하게 변환해야 합니다.

코드는 다음과 같습니다.

(new ISO8601Formatted(
    new FromISO8601('2038-01-19 11:14:07'),
    'm/d/Y h:iA'
))
    ->value();

출력합니다.01/19/2038 11:14AM기대하시는 대로입니다.

이 예에서는 머랭 라이브러리를 사용합니다.괜찮으시다면 몇 가지 더 확인하실 수 있습니다.

직접 출력(예: 독일어 형식):

  echo(date('d.m.Y H:i:s', strtotime($row["date_added"])));
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";

언급URL : https://stackoverflow.com/questions/136782/convert-from-mysql-datetime-to-another-format-with-php

반응형