有没有什么函数给数字加0和去掉0

有没有函数可以更优雅的实现给数字前面加0呢?比如

01
02
03
……
07
08
09

给<10的数字前面加0,然后取出来的时候再把0去掉,我主要存取用户的生日年份,取出来在按yyyymmdd这种格式截取,然后再去掉0就可以了,有没有什么函数一部到位的呀?

阅读 10k
10 个回答

http://www.w3school.com.cn/ph...

date('j');//一个月中的第几天,不带前导零(1 到 31)
date('d');//一个月中的第几天(从 01 到 31)
data('m');//月份的数字表示(从 01 到 12)
date('n');//月份的数字表示,不带前导零(1 到 12)

如果是数字前自动补0,可以用sprintf
$a = 1;
echo sprintf("%02d", $a);//输出该数字,若十位、个位为空或0,自动补零
$a = '01';
echo sprintf('%d', $a);//去0

 a=> ("0" + a).slice(-2)

function addZ(a){
    return ('0' + a).slice(-2);
}
'2'.replace(/^(\d)$/,'0$1')
'20160101'.replace(/(\d{4})(\d{4})/,function(a,b,c){return b + c.replace(/0/g,'')})

这样去零20161101和20160111结果一样!

自定义函数肯定可以做到,
如果是2010-1-1这种格式,想变成2010-01-01 完整可以用时间格式化函数格式化的结果可以是2010-1-1也可以是2010-01-01,完全取决于参数

如果是1想在前面加0,那么就用自定义函数吧

function addzero($value){
    if ($value<10){
        return '0'.$value;
    }
    return $value;
}

比如你有还有时间格式的string时间,先转换为date类型
再调用date_format格式化一下,如下:

//获取或创建时间
$date = date_create_from_format('Ymd','20160908');
//转换时间,第二个参数详见文档
$str = date_format($date,"Y-n-j");
//输出没有0的结果
echo $str;//2016-9-8

关键参数说明

格式 说明 返回值例子
j 月份中的第几天,没有前导零 1 到 31
n 数字表示的月份,没有前导零 1 到 12

详细说明

php时间格式文档

string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )

该函数返回 input 被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的 pad_string 参数没有被指定,input 将被空格字符填充,否则它将被 pad_string 填充到指定长度

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
宣传栏