在我的程序中,我正在使用以下分隔符解析字符串日期(frmDateStr)并获取fromDate 我用它来进行进一步的比较。
String frmDateStr = "12/25/2013";
Date fromDate = formatter.parse(frmDateStr);
现在,如果我通过frmDateStr = "12252013" or "122513"(2 digit year)
,我想得到相同的结果。
但我得到了parse exception.
所以,请告诉我如何获取日期值,而字符串没有分隔符和短年?
提前致谢
佳日
答案 0 :(得分:2)
使用此代码,它会有所帮助
String dateFormat = "MMddyyyy";
if (dateString.indexOf("/") != -1)
{
dateFormat = "MM/dd/yyyy";
}
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
System.out.print(formatter.parse(dateString));
您的输入为dateString
答案 1 :(得分:1)
正如其他答案所说,你必须定义一个适合你数据的格式化程序。
Java 8及更高版本与新的java.time框架(Tutorial)捆绑在一起。这些新类取代了旧的java.util.Date/.Calendar& java.text.SimpleDateFormat中。
此外,java.time包含一个类LocalDate
,仅代表一个日期,没有时间和时区,就像你在问题中一样。
String input = "12252013";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "MMddyyyy" );
LocalDate localDate = LocalDate.parse( input , formatter );
转储到控制台。
System.out.println( "localDate : " + localDate );
跑步时。
localDate:2013-12-25
答案 2 :(得分:0)
import java.util.Random;
/**
* Created by vapa1115 on 9/27/2018.
*/
public class UtmUtil {
public static String getSourceAddress(String sourceAddressValue) {
if(sourceAddressValue==null) {
Random r = new Random();
sourceAddressValue = r.nextInt(256) + "." + r.nextInt(256) + "." + r.nextInt(256) + "." + r.nextInt(256);
}else{
Random r = new Random();
int ind = sourceAddressValue.lastIndexOf(".");
String randomValue=r.nextInt(256)+"";
if(randomValue.length()>3){
randomValue=randomValue.substring(0,2);
}
sourceAddressValue= new StringBuilder(sourceAddressValue).replace(ind, ind+1,"."+randomValue).toString();
}
return sourceAddressValue;
}
public static void main(String sd[]){
getSourceAddress("192.168.0");
}
}
答案 3 :(得分:-1)
创建您自己的SimpleDateFormat
实例并使用它从字符串中读取日期:
所有必要的信息都可以在这里找到: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html