2016-07-23 3 views
2

가 여기 내 PHP 코드변환 소인 문자열이

다음
var_dump($args['startdate']); 
var_dump((int)$args['startdate']);die(); 

출력

string(13) "1468821556126" int(2147483647) 

예상 출력 이런 일이 어떻게이 문제를 해결하려면 왜

string(13) "1468821556126" int(1468821556126) 

입니다 문제?

+1

문제가 무엇입니까하여 분할해야? 이 문맥에서 * "해결"하는 것은 무엇을 의미합니까? – BeetleJuice

+0

'int idate (string $ format [, int $ timestamp = time()])'더 읽기 http://php.net/manual/en/function.idate.php – ihemant360

+0

@BeetleJuice 지금 편집보기 ... –

답변

2

당신은 신뢰할 수있는 결과를 얻을 수 없습니다. 당신이 숫자 형식으로 필요하면 당신이 얻을하려는 경우 당신만큼 큰 수에 대한

echo PHP_INT_MAX; //2147483647 on my system 

는, 거기에서 정수

echo floatval('1468821556126'); //1.46882155613E+12 

대신 float로 캐스팅 날짜, 이것은 Javascript 시간 (밀리 초 단위)이라고 가정합니다. 당신의 $args['startdate']이 밀리 초에 있기 때문에 그것은 무슨 일이 일어나고 1000

+0

답변을 주셔서 감사합니다 ... :) –

1

아마도 32 비트 시스템을 사용하고있을 것입니다. 표시되는 숫자는 32 비트 시스템에서 int의 최대 크기입니다. 플로트를 사용하거나 64 비트 시스템으로 변경하십시오.

참조 : 당신의 숫자가 정수로 표현하기에 너무 크기 때문에 PHP Integer

+0

어떻게하면 원하는 출력을 얻을 수 있습니까 ?? 나는 당신이 이미 말하고있는 것을 안다. :) –

+0

왜 정수가 필요한지 조금 더 자세히 설명해 주시겠습니까? PHP는 데이터 유형이 매우 유연합니다. 종종 더 걱정하지 않아도됩니다. – adarshdec23

+0

@PraveenKumar PHP 정수가 그렇게 높지 않기 때문에'var_dump'에서 정확히'int (1468821556126)'를 얻을 수 없습니다. 대신 내 솔루션에서 (또는이 하나에 제안 된 것처럼) – BeetleJuice

1

유닉스 타임 스탬프로 변환하려면, 당신은 그때까지 분할해야합니다, 당신은 1000

+1

'$ args ['startdate ']'가 타임 스탬프라면 다음이 유일한 정답입니다. 'echo (date ("Y-m-d H : i : s e", 1468821556126/1000));'2016-07-18 08:59:16 유럽/부카레스트 '를 출력한다. – axiac

+0

@axiac 이것은 아마도 op가 찾고있는 것일 것입니다. – adarshdec23