我想知道PHP的date()
函数是否有一种格式化字母,可以打印没有前导零的分钟,或者我必须手动测试和删除前导零?
用法:
$minutes = intval(date('i'));
09
视为八进制数字,因为有前导零-由于9
不是有效的八进制数字,因此将被评估为0
。但是它将字符串09
视为十进制整数9
。 意料之外的行为再见! :) - hek2mgl(int)date('i');
иҖҢдёҚжҳҜintval()
пјҢиҝҷж ·йҖҹеәҰеә”иҜҘжӣҙеҝ«гҖӮ - KoviNETabs( date( 'i' ) )
不像 intval()
有相同的问题。 - aequalsbecho +'05';
的结果是打印值 5
。所以 +$date->format("your-format")
将返回一个整数 :) - Eugen Mihailescultrim()
- 从字符串开头删除空格(或其他字符)ltrim(date('i:s'), '0');
返回:
8:24
elseif ($duration <= 3599 && $duration > 59) {
..) - Jasom Dotnetltrim(date('i'), 0)
和 ltrim(date('s'), 0)
:) - jave.webdate()
函数没有不带前导零的分钟占位符。$minutesWithoutZero = 1* date( 'i' );
Hippo
的答案。;-P - Bojangles我也尝试过寻找这个方法,但没能成功。最终我决定将结果转换为整数类型,具体做法如下:
echo (int)date("s");
看起来不是这样,但你可以做类似于...
echo date('g:') . ltrim(date('i'), '0');
或者,您可以使用(int)
将第二个date()
调用进行转换。
这也是有效的
$timestamp = time(); // Or Your timestamp. Skip passing $timestamp if you want current time
echo (int)date('i',$timestamp);
time()
。 - alexdate('format_string')
假定time()
作为第二个参数。 - aequalsb我刚刚完成了这一行的解决方案。
$min = intval(date('i',strtotime($date)));
使用ltrim方法可能会删除所有前导零。例如,如果是'00'分钟,这种情况下将删除所有零并给出空结果。
如果我需要 XXmXXs 的格式,我会使用这种格式:
//Trim leading 0's and the 'm' if no minutes
ltrim(ltrim(gmdate("i\ms\s", $seconds), '0'), 'm');
12m34s
1m23s
12s
print ltrim(gmdate("H\hi\ms\s", $duration), '0mh');
- Jasom Dotnetfunction seconds2string($seconds) {
if ($seconds == 0) {
return '-';
}
if ($seconds < 60) {
return date('0:s', $seconds);
}
if ($seconds < 3600) {
return ltrim(date('i:s', $seconds), 0);
}
return date('G:i:s', $seconds);
}
0 seconds: -
10 seconds: 0:10
90 seconds: 1:30
301 seconds: 5:01
1804 seconds: 30:04
3601 seconds: 1:00:01
(int) date('i');
(int)
函数在PHP中本地运行,因此应该运行速度快。但我没有测试过。 - user3890355
abs(date('i'))
没有像intval()
一样的问题。 - aequalsb