1. Python的除法
线上有一个简单的函数,运行一年多了,作用是把"分"表示的字符串转成"元":
看起来也的确是没有什么问题,但是就这么简单的一点代码,它还是错了,原因是fen_to_yuan("-270")居然返回了"-3.30"!坑爹啊。简单测试一下,原来是这样:
所以只好蛋疼地修改成这样:
2. 线上有一个脚本,要得到上个月的月份,bash的实现就是
看起来也的确是没有什么问题,但是就这么简单的一点代码,它还是错了,原因是对于10月31号居然返回了10!坑爹啊。简单测试一下,原来是这样:
也就是说,先把月份减一,然后检查日期,超过当前月,再向上修正月份,再向上修正年份。
所以只好蛋疼地修改成这样:
#update: @whusnoopy补充说 向后查看1个月也会有这样的情况,总之记得用月来算是有坑的,千万注意。
3. crontab的小坑
crontab默认是不会读取.bashrc,需要自己去source一下.bashrc,并且不支持像bash一样用反引号来启动一个子命令(这个结论是错的,是因为%前面忘了加斜杠)。这个不展开细说了,有兴趣的试试吧。
线上有一个简单的函数,运行一年多了,作用是把"分"表示的字符串转成"元":
def fen_to_yuan(str_fen):
fen = int(str_fen)
return '%d.%02d' % (int(fen / 100) , fen % 100)
fen = int(str_fen)
return '%d.%02d' % (int(fen / 100) , fen % 100)
看起来也的确是没有什么问题,但是就这么简单的一点代码,它还是错了,原因是fen_to_yuan("-270")居然返回了"-3.30"!坑爹啊。简单测试一下,原来是这样:
引用
>>> -270/100
-3
>>> -270%100
30
-3
>>> -270%100
30
所以只好蛋疼地修改成这样:
def fen_to_yuan(str_fen):
fen = int(str_fen)
sign, fen = fen < 0 and ('-', -fen) or ('', fen)
return sign + '%d.%02d' % (int(fen / 100) , fen % 100)
fen = int(str_fen)
sign, fen = fen < 0 and ('-', -fen) or ('', fen)
return sign + '%d.%02d' % (int(fen / 100) , fen % 100)
2. 线上有一个脚本,要得到上个月的月份,bash的实现就是
引用
date -d "-1 month $date" +%m
看起来也的确是没有什么问题,但是就这么简单的一点代码,它还是错了,原因是对于10月31号居然返回了10!坑爹啊。简单测试一下,原来是这样:
引用
$ date -d "-1 month 20121031" +%Y-%m-%d
20121001
$ date -d "-1 month 20130331" +%Y-%m-%d
20130303
20121001
$ date -d "-1 month 20130331" +%Y-%m-%d
20130303
也就是说,先把月份减一,然后检查日期,超过当前月,再向上修正月份,再向上修正年份。
所以只好蛋疼地修改成这样:
引用
date -d "-1 month ${date:0:6}01" +%m
#update: @whusnoopy补充说 向后查看1个月也会有这样的情况,总之记得用月来算是有坑的,千万注意。
3. crontab的小坑
crontab默认是不会读取.bashrc,需要自己去source一下.bashrc,