2013-01-21 2 views
0

01/20/13으로 포맷 된 MySQL 데이터베이스에서 날짜 값을 가져옵니다.이 값에 PHP 날짜 함수를 호출하면 해당 요일을 가져옵니다. 따라서 01/20/13은 일요일이지만 오늘 날짜이지만 그것은 수요일 값을 계속 반환합니다. 나는 프로그래밍에 익숙하지 않은 아래의 코드를 포함 시켰는데, 아마도 이것은 내가 바라 보는 바보 같은 오류 일 것이다.PHP 날짜가 잘못 반환되었습니다.

<?php 

     require '../TimeCard/DB.php'; 

    try{ 
    $stmt = $conn->prepare('SELECT `date` FROM `timeRecords` WHERE `employeeID`= 1 '); 
    $stmt->execute(); 
    } catch(PDOException $e){ 
     echo'ERROR: ' . $e->getMessage(); 
    } 

    while($row = $stmt->fetch()) 
    { 
    echo date("l", $row['date']) . "<br>"; 
    echo $row['date'] . "<br>"; 
    } 

     ?> 
+1

내가 선호하는 경향이 MySQL 날짜가 매우 쉽기 때문에 사람이 읽을 수있는 날짜가 아닌 MySQL 날짜 또는 UNIX 타임 스탬프를 저장 k는 SQL에서, UNIX 타임 스탬프는 PHP에서 사용하기가 매우 쉽습니다. ... 나중에 참조 할 수 있도록. 나는 대부분의 개발자들이 아마 동의 할 것이라고 생각한다. – Ethan

답변

1

MySQL의는 Y-m-D로 저장 Y는 MySQL의 데이터베이스 0000-00-00에 "01/20/13"을 켜집니다있어 M/D /로 날짜를 저장하지 않습니다. 당신이 날짜 형식을 사용하고 문자열로 저장되어 있지 않은 경우

그러나, 귀하의 MySQL의 저장 날짜에

strtotime($row['date']) 
1

사용 한 strtotime를 사용하여 다음

$day = date('l',strtotime($row['date'])); 
1

날짜 기능을 사용 strtotime()

echo date("l", strtotime($row['date'])) . "<br>"; 
1

와 PHP의에 두 번째 인수를 시도함수는 정수 시간 소인입니다. 당신은

$dt = DateTime::createFromFormat('m/d/y', $row['date']); 
echo $dt->format('l'); 

이 당신에게 당신의 소스 형식에 맞게 날짜 파서를 맞게보다는 확실히 같은 포워드로 날짜를 치료하는 등의 단점이있다 strtotime()에 의존의 추가 보너스를 제공 예를 들어 DateTime를 사용하여 더 나은 행운을 가질 것 미국으로 슬래시 (10/12/13) (10월 12일) 여기 예

EU (12월 10일)와 같은 하이픈 (10-12-13)와 날짜 대 - 내 MySQL의 응용 프로그램에서 http://codepad.viper-7.com/iVXxA1

+0

질문이 있습니다. 어떤 라이브러리에서이 클래스 인'DateTime'을 사용할 수있게해야합니까? –

+0

죄송합니다 답변을 얻었습니다. thanks http://php.net/manual/en/datetime.installation.php –

관련 문제