Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从日期字符串中分离年、月、日的聪明方法?_Java_Android_String_Date - Fatal编程技术网

Java 从日期字符串中分离年、月、日的聪明方法?

Java 从日期字符串中分离年、月、日的聪明方法?,java,android,string,date,Java,Android,String,Date,我有日期字符串,格式如下:2014-3-30。我想把它分成3个字符串:2014年3月30日。有什么聪明的办法吗?(java)尝试以下方法: String[] arr = strDate.split("-"); String strYear = arr[0]; String strMonth = arr[1]; String strDay = arr[2]; 我倾向于使用这样的东西 String totalString = "2014-Mar-30"; String yearString = t

我有日期字符串,格式如下:2014-3-30。我想把它分成3个字符串:2014年3月30日。有什么聪明的办法吗?(java)

尝试以下方法:

String[] arr = strDate.split("-");
String strYear = arr[0];
String strMonth = arr[1];
String strDay = arr[2];

我倾向于使用这样的东西

String totalString = "2014-Mar-30";
String yearString = totalString.substring(0, totalString.indexOf('-'));
String monthString = totalString.substring(totalString.indexOf('-') + 1, totalString.lastIndexOf('-'));
String dayString = totalString.substring(totalString.lastIndexOf('-') + 1);

希望这有帮助:)

对于您的具体情况,快速而肮脏的方法是使用
String.split('-')
。(如@Vyger)

然而,一种更可靠的方法可能是使用正则表达式并搜索一行中的4位数字、一行中的3个字母以及剩余的任何内容(1或2位)。这样,您可能能够处理许多看似合理的替代方案,如


“2014年3月30日”甚至“2014年3月30日”

有一个诡辩:可以说,strYear和strDay应该是整数。否:OP说:
我想把它分成3个字符串:2014年3月30日
-所以他/她想要的正好是3个字符串SOP是错误的。:-)半认真地说,当int明显优于字符串时,为什么要将年份和日期作为字符串?你想比较一个月的哪一天?字符串不能可靠地工作(如果它们省略了前导0)。你想知道离2222还有多少年?一根绳子是额外的工作。Java是强类型的,
int
显然是一种非常有用的类型。我真的很讨厌程序员无缘无故地把所有东西都变成字符串。或者,在这种情况下,一个消极的原因。是的,你是对的。我也会把你的视野延伸到这个月。但我是谁来讨论他/她的遗嘱?S/他想要绳子?我给他/她一些条件……;)