我基本上是根据上传到我们系统的序列号来确定保修日期。
例如,序列号可能是这样的:
def set_shader_bump_depth(shader, amount):
bump2ds = mc.listConnections(shader, type = 'bump2d')
# that's always list, so we loop over it
for eachbump2d in bump2ds:
print "editing", eachbump2d
mc.setAttr(eachbump2d + ".bumpDepth", amount)
其中217A111111111
的{{1}}是2017年的年份。然后第4位是1月至9月为1-9,然后10月为17
的月份, 11月是217
,12月是A
我基本上需要能够提取B
并使其成为C
或17A
= 2017-10-01
我知道我会使用正则表达式,但我不确定如何检查第4位数字是数字还是字母,如果是171
,2017-01-01
或{{1}然后是十月,十一月或十二月,否则是1-9,然后是一月到九月。
提前谢谢你。
答案 0 :(得分:2)
这应该有效:
$serialnr = '217A111111111';
$month = hexdec($serialnr[3]);
$date = new \DateTime('20' . $serialnr[1] . $serialnr[2] . '-' . $month . '-01');
答案 1 :(得分:1)
如果你知道你要找的东西总是在你的字符串中的4个位置,你可以这么简单:
hexdec(substr($str,3,1))
返回" 9" for" 9"," 10"为" a"," 11"为" b" ......等等。
知道号码,你可以获得你想要的月份。
答案 2 :(得分:0)
const input = '217A111111111';
const truncated = input.substr(1, 3)
let year = 2000+parseInt(truncated.substr(0, 2))
let month = parseInt('0x'+truncated.substr(2, 1)); // 0x prefix is for hexadecimal
console.log(year, month, new Date(`${year}-${month}-01`))