java 日期 怎么 去 零

时间长度不确定,要将例如:200901010000变成20090101,2009011000变为20090110这样子。请问有无有什么比较好的思路如果是200901010... 时间长度不确定,要将
例如:200901010000变成20090101 ,2009011000变为20090110这样子。
请问有无有什么比较好的思路
如果是200901010100 我得出的日期就要2009010101,得出的结果不是固定的8位

就是后面没意义的0都不要。。
200900->2009 ,2009010000->200901
循环我想过啊,但是200910这样的,你循环了不是20091?
你写出来看看。
展开
 我来答
乌微月2S
2010-12-07 · TA获得超过5037个赞
知道大有可为答主
回答量:5361
采纳率:42%
帮助的人:2906万
展开全部
SimpleDateFormat
用这个去转。
思路是这样的,循环去掉最后0,要保留偶数位,也就是说20091010的最后一个0要保留。
(判断的时候,先看字符串的长度是奇数还是偶数,如果是奇数,)
然后根据长度,去顶格式yyyy-MM-dd或者yyyy-MM或者yyyy等等情况。
还是我写吧,写完给你。
public class StringToDate {
public String stringToDate(String str){
int length=str.length();
char c="0".charAt(0);
if(str.length()%2==1){
if(Character.valueOf(c).equals(Character.valueOf(str.charAt(length-1)))){
str=str.substring(0,str.length()-1);
return stringToDate(str);
}else{
return str;
}
}else{
if(Character.valueOf(c).equals(Character.valueOf(str.charAt(length-1)))&&
Character.valueOf(c).equals(Character.valueOf(str.charAt(length-2))) ){
str=str.substring(0,str.length()-2);
return stringToDate(str);
}else{
return str;
}
}
}
public static void main(String[] args) {
StringToDate std=new StringToDate();
System.out.println(std.stringToDate("200901010000"));
System.out.println(std.stringToDate("200901000000"));
System.out.println(std.stringToDate("200901010000"));
System.out.println(std.stringToDate("200910010000"));
System.out.println(std.stringToDate("200910"));
System.out.println(std.stringToDate("200910000000"));
}
}
结果
20090101
200901
20090101
20091001
200910
200910

应该可以了,就是递归判断字符串的长度,奇数判断最后一位是否为0,偶数就判断后2位是否为0.
little902
2010-12-06 · TA获得超过812个赞
知道小有建树答主
回答量:1162
采纳率:0%
帮助的人:795万
展开全部
若你的日期对象是date类型可直接用 用DateFormat格式化。
若是string类型是只是在后面偶尔出现不知道几个0的话可以用String对象的subSting方法来直接截取前8位即可。当然要先判断一下这个字符串长度够不够8位。要不会有下标越界的异常
那你要的是什么呢?
你描述的明白点
2009010101 这个是什么概念?2009年1月1日1点?
这个简单
写个方法循环这个字符串
并保留最后一个非零值下标。然后从这个字符串截取即可。
方法用我给你么?

public class Dates
{
public static String getMyDate(String s)
{
int tmp=0;
for(int i=0;i<s.length();i++)
{
if(!"0".equalsIgnoreCase(String.valueOf(s.charAt(i))))
{
tmp=i;
}
}
return s.substring(0,tmp+1);
}

public static void main(String aa[])
{
System.out.println(Dates.getMyDate("20010101010000000"));
System.out.println(Dates.getMyDate("20010101010sd00000"));
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
RJtycoon
2010-12-06 · TA获得超过359个赞
知道小有建树答主
回答量:452
采纳率:33%
帮助的人:107万
展开全部
如果后面都是010101之类的你可以用字符替换,把1后面0替换成空格
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一切皆对象
2010-12-06 · TA获得超过242个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:212万
展开全部
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
sdf.format(你的日期变量);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oppps
2010-12-06 · TA获得超过2742个赞
知道小有建树答主
回答量:1488
采纳率:0%
帮助的人:1267万
展开全部
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
sdf.format(new date());
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式