2012-09-28 38 views
10

Làm thế nào tôi có thể nhận được 2 chữ số cuối của:Return 2 chữ số cuối một số

<departureDate>200912</departureDate> 

để đối tượng của tôi:

$year = $flightDates->departureDate->year; 
+0

là nó '$ flightDates-> departureDate-> year' trả về' 200912 ' – Baba

+0

Đừng nghĩ vậy. Có vẻ như số được trích xuất từ ​​XML – Peon

+0

Hãy xem hàm date() và hàm strtotime() tại php.net. –

Trả lời

19
// first two 
$year = substr($flightDates->departureDate->year, 0, 2); 
// last two 
$year = substr($flightDates->departureDate->year, -2); 

Nhưng với thực tế là bạn phân tích cú pháp một ngày ở đây sẽ thông minh hơn để sử dụng hàm ngày tháng. p.e. strtotime()date() hoặc thậm chí:

<?php 
$someDate ='200912'; 
$dateObj = DateTime::createFromFormat('dmy', $someDate); 
echo $dateObj->format('Y'); 
// prints "2012" .. (see date formats) 
1

Ví dụ 1: Bạn chỉ có thể tước các thẻ với strip_tags và sử dụng substr

$number = '<departureDate>200912</departureDate>' ; 
$year = substr(strip_tags($number), 0,2); 
var_dump($year); 

Ví dụ 2: Bạn cũng có thể sử dụng simplexml_load_string với substr

$number = '<departureDate>200912</departureDate>' ; 
$year = substr(simplexml_load_string($number),0,2); 
var_dump($year); 

Output

string '20' (length=2) 
0

chuyển nó sang chuỗi. sau đó lấy hai phần tử đầu tiên.

Trong java, bạn có thể thực hiện việc này bằng cách làm theo mã. Để biến là một số nguyên có tên là x. sau đó bạn có thể sử dụng

byte[] array= Integer.toString(x).get.bytes(). 

Mảng [0] và mảng [1] là hai chữ số đầu tiên. mảng [array.length-1] và mảng [array.length] là hai mảng cuối cùng.

+1

Thêm một số mã để làm cho câu trả lời của bạn có ý nghĩa hơn – Yaroslav

+0

Trong java, bạn có thể làm điều này bằng cách làm theo mã. Để biến là một số nguyên có tên là x. sau đó bạn có thể sử dụng byte [] array = Integer.toString (x) .get.bytes().Bây giờ mảng [0] và mảng [1] là hai chữ số đầu tiên. –

+0

Chỉnh sửa câu trả lời của bạn và thêm mã này vào đó, đừng quên định dạng nó. – Yaroslav

6

Bạn chỉ có thể giải quyết nó như chuỗi, hàm substr sẽ chuyển đổi nó tự động:

<?php 

//$year = '200912'; 
$year = $flightDates->departureDate->year; 

echo substr($year, -2); 

?> 

Hãy xem xét kỹ hơn substr chức năng. Nếu bạn muốn kết quả là một số nguyên nghiêm ngặt, thì chỉ cần thêm (int) trước mặt trả lại.

Nhưng, như Jan. nói, bạn tốt hơn nên làm việc với nó như là một ngày:

<?php 

//$year = '200912'; 
$year = $flightDates->departureDate->year; 

$date = DateTime::createFromFormat('dmy', $year); 

echo date("y", $date->getTimestamp()); 

?> 
+0

Đã chỉnh sửa cho tùy chọn ngày. – Peon

2

Bạn có thể sử dụng một hoạt động aritimethic cơ bản, như thế này ...

while ($var > 100) 
{ 
    $var = (int) $var/10; 
} 

Có thể có giải pháp tốt hơn nhưng giải pháp này sẽ phù hợp với mức phạt

+0

Đây là một số mã oldschool điên: D – Peon

+0

Tôi đã cố gắng để có được ra khỏi C nhưng C đã không nhận ra tôi, hehe – ARibas

+0

nhưng mã này __discards__ các chữ số cuối cùng, chỉ giữ hai chữ cái đầu tiên ... – IdiotFromOutOfNowhere

Các vấn đề liên quan