2012-09-28 41 views
10

我怎樣才能得到最後2個位數的:返回的最後2位的數字

<departureDate>200912</departureDate> 

到我的對象:

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

是吧'$ flightDates-> departureDate-> year'返回' 200912' – Baba

+0

不這麼認爲。看起來數字是從XML中提取的 – Peon

+0

在php.net中查看date()函數和strtotime()函數。 –

回答

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

但考慮到你是事實在這裏解析一個日期,使用日期函數會更聰明。 p.e. strtotime()date()甚至:

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

例1:你可以只剝去標籤與strip_tags和使用substr

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

例2:您還可以使用simplexml_load_stringsubstr

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

輸出

string '20' (length=2) 
0

將其轉換爲字符串。然後拿走前兩個元素。

在java中,你可以通過下面的代碼來做到這一點。讓該變量是一個名爲x的整數。那麼你可以使用

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

現在array [0]和array [1]是前兩位數字。 array [array.length-1]和array [array.length]是最後兩個。

+1

添加一些代碼以使您的答案更有意義 – Yaroslav

+0

在java中,您可以通過以下代碼執行此操作。讓該變量是一個名爲x的整數。那麼你可以使用byte [] array = Integer.toString(x).get.bytes()。現在array [0]和array [1]是前兩位數字。 –

+0

編輯你的答案並在其中添加此代碼,不要忘記格式化它。 – Yaroslav

6

您可以只針對它作爲字符串,函數substr將其自動轉換:

<?php 

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

echo substr($year, -2); 

?> 

substr功能細看。如果你想要的結果是一個嚴格的整數,那麼只需在返回前添加(int)即可。

但是,正如Jan.說,你應該更好地使用它作爲一個日期:

<?php 

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

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

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

?> 
+0

爲日期選項編輯。 – Peon

2

你可以使用一個基本aritimethic操作,像這樣...

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

有可能是更好的解決方案,但這一個將適合罰款

+0

這是一些瘋狂的oldschool代碼:D – Peon

+0

我試圖走出C但C沒有離開我,嘿嘿 – ARibas

+0

但這個代碼__discards__最後的數字,只保留兩個第一個... – IdiotFromOutOfNowhere

相關問題