2012-09-28 46 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

相关问题