java 日期 怎么 去 零

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 日期 怎么 去 零相关的知识,希望对你有一定的参考价值。

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

就是后面没意义的0都不要。。
200900->2009 ,2009010000->200901
循环我想过啊,但是200910这样的,你循环了不是20091?
你写出来看看。

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.
参考技术A 若你的日期对象是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"));

参考技术B 如果后面都是010101之类的你可以用字符替换,把1后面0替换成空格 参考技术C SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
sdf.format(你的日期变量);
参考技术D SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
sdf.format(new date());

以上是关于java 日期 怎么 去 零的主要内容,如果未能解决你的问题,请参考以下文章

零基础学Java—Java 日期时间(三十一)

怎么在java日历程序所输入的日期上加入符号?

jsp 怎么把日期转化成timestamp

android里 怎么计算日期差

题解《算法零基础100讲》(第6讲) 日期算法(java版)

FastReport 日期格式转换,该怎么解决