新足迹

 找回密码
 注册

精华好帖回顾

· NSW州政府的Housing Delivery Program规划细节披露及讨论 (2013-3-18) Martin_2F · 说说孩子的美术教育(10月11日173楼更新2012国际少儿绘画大赛参赛作品,请家长自行下载。一楼电梯直达) (2011-9-27) ziying0837
· 豇豆 (2016-11-10) qld · 大头做面食 -- 肉松葱油酥饼, 附送京糕 (2013-1-18) datou2z
Advertisement
Advertisement
查看: 1263|回复: 8

php如何判定两位数年份转换到四位数年份? [复制链接]

头像被屏蔽

禁止发言

发表于 2011-12-8 23:27 |显示全部楼层
此文章由 hfwang 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hfwang 所有!转贴必须注明作者、出处和本声明,并保持内容完整
csv里的年份,
如果是四位数,如2011,则正确,
如果是两位数,如11,则加上2000。
如果是其他,则报错。

我写了这样的,被认为是坏习惯。说有个空的statement是在if后是坏习惯。
--------------------------------------
if (strlen($soldYear) == 2)
  {
  $soldYear += 2000;
  }
  elseif (strlen($soldYear) == 4)
  {
   
  }
  else
  {
  $result['errors'][] = "Line {$lineNumber} contains invalid 'whenSold' date. Expected date input format: 'dd/mm/yyyy hh:mm:ss' or 'dd/mm/yy hh:mm:ss'";
  continue;
  }

---------------------------------------

请教这样的还能写成其他的样子吗?



有模版给我,

if ($soldYear < 100 && $soldYear > 9)
  {
  $soldYear += 2000;
  }

  if ($soldYear < ($thisYear + 10)) # calculate $thisYear somewhere above
  {
  # error stuff goes here
  ...
  }

一直不明白$thisYear这个变量怎么定义,能用早这里。


我是菜鸟,还希望大侠看下,谢谢了!
Advertisement
Advertisement

发表于 2011-12-8 23:36 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
可以这样吗?
  1. if($soldyear < 100 || $soldyear > 1000) {
  2.     if($soldyear <100)
  3.         $soldyear +=2000;
  4. } else {
  5.     echo "failed";
  6. }
复制代码
反正我是横冲直撞的呵呵
头像被屏蔽

禁止发言

发表于 2011-12-8 23:48 |显示全部楼层

回复 porcorosso 2# 帖子

此文章由 hfwang 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hfwang 所有!转贴必须注明作者、出处和本声明,并保持内容完整
谢谢你的回答,
这个本质和

if(strlen($soldYear) == 2|| strlen($soldYear) == 4) {
    if(strlen($soldYear) == 2)
        $soldyear +=2000;
} else {
    echo "failed";
}

只是把空括号给去掉了?谢谢

发表于 2011-12-9 01:22 |显示全部楼层
此文章由 菜地一块 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 菜地一块 所有!转贴必须注明作者、出处和本声明,并保持内容完整
可以用年份对2000求余,余数加上2000即可得到年份,也不用写什么if else了。

发表于 2011-12-9 11:05 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
ls, 1999怎么办

发表于 2011-12-9 11:14 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hfwang 于 2011-12-8 23:48 发表
谢谢你的回答,
这个本质和

if(strlen($soldYear) == 2|| strlen($soldYear) == 4) {
    if(strlen($soldYear) == 2)
        $soldyear +=2000;
} else {
    echo "failed";
}

只是把空括号给去掉了?谢谢


比你一楼的例子简洁,而且是运用Arithmetic而不是String Length,快很多的。 还有还有,去掉了else if(strlen($soldYear) == 4){//do nothing}
Advertisement
Advertisement

发表于 2011-12-9 11:41 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你那个把等于换成不等于,不就把空语句干掉了么

strlen($soldYear) != 4

发表于 2011-12-9 13:33 |显示全部楼层
此文章由 dcc82 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dcc82 所有!转贴必须注明作者、出处和本声明,并保持内容完整
s

[ 本帖最后由 dcc82 于 2011-12-9 13:36 编辑 ]
头像被屏蔽

禁止发言

发表于 2011-12-9 21:53 |显示全部楼层
此文章由 hfwang 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hfwang 所有!转贴必须注明作者、出处和本声明,并保持内容完整
非常感谢楼上的回答,特别是红猪

评分

参与人数 1积分 +2 收起 理由
porcorosso + 2 被感动二字骗了

查看全部评分

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部