12

我怎样才能得到最后2位数字:

<departureDate>200912</departureDate>

对我的对象:

$year = $flightDates->departureDate->year;
4

6 回答 6

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

但是考虑到您在这里解析日期的事实,使用 date 函数会更聪明。pestrtotime()甚至date()

<?php
$someDate ='200912';
$dateObj = DateTime::createFromFormat('dmy', $someDate);
echo $dateObj->format('Y');
// prints "2012" .. (see date formats)
于 2012-09-28T12:07:35.263 回答
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() );

?>
于 2012-09-28T12:05:26.403 回答
4

对于数字,您可以使用 php 的模函数(http://php.net/manual/en/internals2.opcodes.mod.php):

<?php
//$year = '200912';
$year = $flightDates->departureDate->year;

echo $year % 100;
?>
于 2015-09-10T18:02:53.507 回答
2

你可以使用一个基本的算术运算,像这样......

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

可能有更好的解决方案,但这个会很好

于 2012-09-28T12:06:07.450 回答
1

示例 1:您可以剥离标签strip_tags并使用substr

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

示例 2:您也可以使用simplexml_load_stringwithsubstr

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

输出

string '20' (length=2)
于 2012-09-28T12:05:08.687 回答
0

将其转换为字符串。然后取前两个元素。

在java中,您可以通过以下代码来做到这一点。让变量是一个名为 x 的整数。那么你可以使用

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

现在 array[0] 和 array[1] 是前两位数。array[array.length-1] 和 array[array.length] 是最后两个。

于 2012-09-28T12:05:23.320 回答