java 日期 怎么 去 零
时间长度不确定,要将例如:200901010000变成20090101,2009011000变为20090110这样子。请问有无有什么比较好的思路如果是200901010...
时间长度不确定,要将
例如:200901010000变成20090101 ,2009011000变为20090110这样子。
请问有无有什么比较好的思路
如果是200901010100 我得出的日期就要2009010101,得出的结果不是固定的8位
就是后面没意义的0都不要。。
200900->2009 ,2009010000->200901
循环我想过啊,但是200910这样的,你循环了不是20091?
你写出来看看。 展开
例如:200901010000变成20090101 ,2009011000变为20090110这样子。
请问有无有什么比较好的思路
如果是200901010100 我得出的日期就要2009010101,得出的结果不是固定的8位
就是后面没意义的0都不要。。
200900->2009 ,2009010000->200901
循环我想过啊,但是200910这样的,你循环了不是20091?
你写出来看看。 展开
6个回答
展开全部
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.
用这个去转。
思路是这样的,循环去掉最后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.
展开全部
若你的日期对象是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"));
}
}
若是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"));
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果后面都是010101之类的你可以用字符替换,把1后面0替换成空格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
sdf.format(你的日期变量);
sdf.format(你的日期变量);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
sdf.format(new date());
sdf.format(new date());
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询