2014-01-16 3 views
1

이미 응답했는지 여부는 확실하지 않지만 Google 검색을 수행 했으므로 유용한 정보가 없습니다.PHP : 양식 선택에서 다시 시간() 형식으로 변환


I 월, 일, 년,시 및 분을위한 양식 선택 필드 (초 항상 00)이 있고 (예를 들어) 다음 HTML 코드 나는 시간으로 다시 변환 할 필요가있다() 형식으로 제출하십시오. PHP로 어떻게하면 좋을까요?

<select name="month"> 
    <option value="01">January</option> 
    <option value="02">February</option> 
    <option value="03">March</option> 
    ... 
</select> 

<select name="day"> 
    <option value="01">1</option> 
    <option value="02">2</option> 
    <option value="03">3</option> 
    ... 
</select> 

<select name="year"> 
    <option value="2014">2014</option> 
    <option value="2015">2015</option> 
    ... 
</select> 

<select name="hour"> 
    <option value="00">12am</option> 
    <option value="01">1am</option> 
    <option value="02">2am</option> 
    <option value="03">3am</option> 
    <option value="12">12pm</option> 
    <option value="13">1pm</option> 
    ... 
</select> 

<select name="minute"> 
    <option value="01">1</option> 
    <option value="02">2</option> 
    <option value="03">3</option> 
    ... 
</select> 

<!-- second is always 00 --> 

참고 : 각 선택 항목의 값은 필요할 경우 변경할 수 있습니다. 이 작업을 효율적으로 수행하기 위해 어떤 포맷을 사용해야하는지 잘 모릅니다.

+0

andwhere 당신의 PHP는 무엇입니까? –

+0

나는 그것을 어떻게 할 지 전혀 모른다. 그래서 나는 PHP로 어디에서 시작해야할지 모른다. – kdjernigan

+0

나는 이것을 다시 time() 형식으로 변환하는 변환 방법을 모른다. – kdjernigan

답변

2

strtotime()DateTime 클래스를 확인하십시오.

<?php 
$date = $_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day']; 
$time = $_POST['hour'] . ':' . $_POST['minute']; 

// Simple way to get a Unix timestamp from a date string 
$timestamp = strtotime($date . ' ' . $time); 

// To do more modifications to the date, you should use the DateTime class 
$dateObj = new DateTime($date . ' ' . $time); 
$dateObj->modify('+1 year'); // Adds a year to the date 
$timestamp = $dateObj->format('U'); // Returns the date as a Unix timestamp 
+0

이 내 값으로 괜찮습니까? 월 : xx 일 : xx 년도 : xxxx 시간 : xx 분 : xx ?? – kdjernigan

+1

그래,'strtotime()'(또는 문자열 메소드의 DateTime)은 꽤 강력합니다. 기본 형식은'YYYY-mm-dd HH : ii : ss'이며 사용자의 형식입니다. – Sam

+0

http://jsfiddle.net/Be22G/1/ 여기에있는 코드가 다음 오류를 반환합니다. '치명적인 오류 :'예외 '메시지와 함께'예외 '가 검색되었습니다. DateTime :: __ construct() : 시간 문자열 (2015-03)을 파싱하지 못했습니다. - 02:02) 7 위치 (-) : 예상치 못한 문자 '/home/****/public_html/datetime.php:10 스택 추적 : # 0/home/****/public_html/datetime.php (10) : DateTime -> __ construct ('2015-03- 02:02') # 1 {main} /home/****/public_html/datetime.php on line 10'에 게시 됨 – kdjernigan

1

strtotime 기능을 사용하십시오.

이제 유닉스 타임 스탬프를 얻기 위해, DateTime 개체가
echo strtotime("10 September 2000"); // output 968569200 of unix timestamp 
3
$time = DateTime::createFromFormat(
    'Y-m-d H:i:s', 
    sprintf("%d-%d-%d %d:%d:%d", 
     intval($_POST['year']), 
     intval($_POST['month']), 
     intval($_POST['day']), 
     intval($_POST['hour']), 
     intval($_POST['minute']), 
     0 
    ) 
); 

는 수행

$timestamp = $time->getTimestamp(); 
+0

은 time()과 같은 형식입니까? 내 코드가 내부적으로 time()을 사용하고 있기 때문에 확인하고 싶었습니다. – kdjernigan

+2

'time()'은 유닉스 타임 스탬프를 반환한다. – MueR

+0

Doh, concat to concat :) 그 문제를 해결할 것입니다. – MueR

관련 문제