2006-10-11 3:39:17 AM을 2006-10-11 03:39:17 꼴로 변형하려면?
본문
php에서
$datetime = 2006-10-11 3:39:17 AM 을
위의 값을 0000-00-00 00:00:00 꼴로 변형하려면?
이런 포맷이 잘 안찾아지네요
엑셀에 들어잇는 값은 2006-10-11 3:39:17 AM 인데
그 값을 변수에 넣어보니 실제로 그 변수에 들어있는 값은 '12/10/2006 12:39' 이네요???
완전 다른 날짜와 시간으로???
왜 이런가요? 위에 내용 처럼..포맷 변형을 제대로 시켜야 하나요?
답변 7
1. 엑셀로 처리하는 방법
ㄱ. 텍스트 함수로 텍스트로 처리
ㄴ. 해당 값을 값으로 복사하여 붙여 넣기
=> 해당열 선택 Ctrl+C > 우클릭 > 선택하여 붙여넣기 > 값으로 붙여넣기
=> 위 방법으로 하면 해당 날짜들이 텍스트로 붙여 넣어집니다.
2. PHP 파일로 처리 하는 방법
ㄱ. reader.php 0x16주석처리
ㄴ. 위 방법으로 하면 42639.6464699 이런식 ㄷ. 변환 테스트 해보니 위 처럼 하니 초까지는 정확히 나왔습니다. 1초 정도 차이가 있을 수도 있겠네요.
var $dateFormats = array (
0xe => "d/m/Y",
0xf => "d-M-Y",
0x10 => "d-M",
0x11 => "M-Y",
0x12 => "h:i a",
0x13 => "h:i:s a",
0x14 => "H:i",
0x15 => "H:i:s",
//0x16 => "d/m/Y H:i",
0x2d => "i:s",
0x2e => "H:i:s",
0x2f => "i:s.S");
$UNIX_DATE = ($in_datetime - 25568.99999) * 86400;
echo gmdate("Y-m-d H:i:s", $UNIX_DATE);
config.php 파일 보시면 시간 날짜관련 정보가 있으니 참고하시면 활용가능하실거에요
다시질문내용정리)
엑셀에 들어있는 날짜를 db에 넣기 하고 있는데요
제가 원하는 것은 엑셀에 들어있는 값을(2006-10-11 3:39 또는 2006-10-11 3:39:17 AM이던지 어쨌든..)
DB 에 2006-10-11 03:39:ss 형식으로 넣는 것 입니다.
1차현상) 엑셀에 들어있는 값이 그냥 보기에는 2006-10-11 3:39 으로 보이는 데
그 셀을 마우스로 클릭시 엑셀 상단에 보이는 실제(아래 그림 참조) 값은
2006-10-11 3:39:17 AM 형식으로 보여요
2차현상) 그래서 엑셀에 들어잇는 실제 값은 2006-10-11 3:39:17 AM 인데
그 값을 아래처럼 변수에 넣어보니
$wr_datetime = addslashes($data->sheets[0]['cells'][$i][$j++]);
여기에서 $wr_datetime 에 들어있는 값은 12/10/2006 12:39 으로 전혀 엉뚱한 값이 들어가네요??
3차현상) 그 변수를 아래와 같이 다시 변환해본 결과
$wr_datetime =date('Y-m-d H:i:s', $wr_datetime);
여기에서 $wr_datetime 에 들어있는 값은 1970-01-01 09:00:12 입니다
또 다시 이렇게 전혀 다른 날짜가 나오는데???
이거 원인과 해결법좀 알려주시면 감사하겠습니다
제가 원하는 것은 엑셀에 들어있는 값을(2006-10-11 3:39 또는 2006-10-11 3:39:17 AM이던지 어쨌든..)
DB 에 2006-10-11 03:39:ss 형식으로 넣는 것 입니다.
답변 주시는 모든 분께 하시는일 잘 되십시오^^
1. 엑셀에서 처리 : 표시형식을 변경해본다. (hh)
2. 위 방법으로도 안되면 그냥 아래 처럼 무식하게 처리한다.
<?php
$in_datetime = '2016-12-07 9:20:00 AM';
$in_datetime = '2016-12-07 1:20:00 PM';
$tmp = explode(' ', $in_datetime);
if($tmp[3] == 'AM') $in_datetime = substr(str_replace(' ', ' 0', $in_datetime),0,19);
else if($tmp[3] == 'PM') {
$plus_h = $tmp[2][0] + 12;
$in_datetime = substr(str_replace(' '.$tmp[2][0], ' '.$plus_h, $in_datetime),0,19);
}
echo $in_datetime;
?>
아. 다시.
reader.php 에서 아래 코드
원본코드
var $dateFormats = array (
0xe => "d/m/Y",
0xf => "d-M-Y",
0x10 => "d-M",
0x11 => "M-Y",
0x12 => "h:i a",
0x13 => "h:i:s a",
0x14 => "H:i",
0x15 => "H:i:s",
0x16 => "d/m/Y H:i",
0x2d => "i:s",
0x2e => "H:i:s",
0x2f => "i:s.S");
추측 변경 코드
var $dateFormats = array (
0xe => "Y/m/d",
0xf => "Y-M-d",
0x10 => "M-d",
0x11 => "Y-M",
0x12 => "h:i a",
0x13 => "h:i:s a",
0x14 => "H:i",
0x15 => "H:i:s",
0x16 => "Y/m/d H:i",
0x2d => "i:s",
0x2e => "H:i:s",
0x2f => "i:s.S");
또는
0x16 => "Y/m/d H:i:s",
통밥으로 찍어봤습니다. 테스트해보시고 결과좀..ㅎㅎ
!-->!-->!-->