문제

웹 사이트의 다양한 부분에서 정렬하고 필터링하기 위해 항목 날짜와 동일한 unix epoch 타임 스탬프를 사용하는 mysql 테이블이 있습니다.mm/dd/yyyy 형식으로 양식 필드에 날짜를 입력하는 날짜 선택기를 구현하려고 합니다.나는 행 필드에 해당 항목을 추가하기 위해 해당 날짜를 unix epoch 형식으로 변환하는 데 어려움을 겪었습니다.제가 수행한 모든 시도의 결과로 현재 날짜의 에포크 타임스탬프가 생성되었습니다.해당 날짜 형식을 취하여 해당 시대의 타임 스탬프로 변환하는 방법을 아는 사람이 있습니까?

미리 감사드립니다.

추가 정보:

나는 mktime을 시도해 왔고 내가 얻는 것은 오늘의 시대뿐입니다.죄송합니다. 더 잘 설명하기 위해 더 일찍 몇 가지 코드를 추가했어야 했습니다.

양식 ID는 "date"입니다. 데이터베이스 필드는 "epoch"입니다.

날짜를 게시할 때 내가 시도하는 것(실패)은 다음과 같습니다.

$epochhold = ($_POST['date']);
$epoch = mktime(0,0,0,$epochhold);

나는 이전 게시물에서 이것이 mktime이 예상하는 대로 mm, dd, yyyy가 아닌 mm/dd/yyyy로 값을 제출한다는 것을 이해합니다. 그러나 게시물에서는 이를 수행하는 방법에 대한 해결책을 제공하지 않았습니다."/"를 ""로 변경하기 위해 str_replace를 시도했는데 동일한 결과가 나왔습니다. 입력한 날짜에 관계없이 오늘의 신기원 날짜를 가져오는 것입니다.

다음은 해당 코드 예제입니다. 다시 한 번 작동하지 않았지만 시도한 내용을 설명하는 데 도움이 되도록 추가합니다.

$epochhold = ($_POST['date']);
$epochold2 = str_replace('/', ', ', $epochhold)
$epoch = mktime(0,0,0,$epochhold2);

이전 답변에도 감사드립니다. 빠른 답변이 눈에 띄지 않게 하고 싶었습니다!

모두 감사합니다!

답글을 주신 모든 분들께 감사드립니다. strtotime은 초기 테스트에서 가장 잘 작동하는 것으로 보이며 이 형식이 사이트 전체에서 일관되기 때문에 좋은 방법일 수도 있습니다.하지만 모든 제안이 이 몇 가지 다른 사항에도 도움이 되었기 때문에 다시 한 번 감사드립니다!

도움이 되었습니까?

해결책

항상 해당 형식이라는 것을 알고 있다면 strtotime은 이를 Unix 타임스탬프로 직접 변환합니다.

strtotime($_POST['app_date']);

HTH!

다른 팁

당신은 MK타임() 기능.정규식 또는 strtotime(), 그러면 당신은 그것을 갖게 될 것입니다.

if ( ! preg_match('#\d{2}/\d{2}/\d{4}#', $_POST['date']) ) {
    // complain about invalid input
}

list($m, $d, $y) = explode('/', $_POST['date']);
$timestamp = mktime(0, 0, 0, $m, $d, $y);

dd,mm,yyyy를 별도의 변수로 mktime에 보내야 합니다.$epochold2의 값을 mktime에 유효하지 않은 하나의 문자열로 사용합니다.

가장 좋은 방법은 앞서 언급한 대로 strtotime을 사용하거나 mktime을 사용하여 Ant P의 조언을 따르는 것입니다.

strtotime() 거의 모든 날짜 형식을 구문 분석하고 Unix 타임스탬프를 반환합니다.당신이 해야 할 일은 날짜/시간 문자열을 전달하는 것뿐입니다.

$unix_time = strtotime($_POST['date']);
if($unix_time < 0) {
    //error case
}
else {
    //value OK!
}

위에서 볼 수 있듯이 이를 사용하여 입력 유효성을 검사할 수도 있습니다. 사용자가 2008년 2월 31일과 같은 날짜를 입력하면 -1이 반환됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top