“转换字符串”;01-09-2015';到Long-Java/Android

“转换字符串”;01-09-2015';到Long-Java/Android,java,android,Java,Android,嗨,我有一根像这样的线“01-09-2015” 我需要将这个字符串转换为long 我试过使用 String date = "01-09-2015"; Long dateLong = Long.getLong(date); Long dateLong = Long.valueOf(date); Long dateLong = Long.valueOf(date,36); Long dateLong = Long.parseLong(date); 仍然没有帮助。返回的所有内容都是Number

嗨,我有一根像这样的线“01-09-2015” 我需要将这个字符串转换为long

我试过使用

String date = "01-09-2015";
Long dateLong = Long.getLong(date);

Long dateLong = Long.valueOf(date);

Long dateLong = Long.valueOf(date,36);

Long dateLong = Long.parseLong(date);
仍然没有帮助。返回的所有内容都是NumberFormatException。 任何人都请帮忙。 提前谢谢

编辑


伙计们,我会发送一个字符串,当然是像“08-01-2015”这样的日期。对于我传递的每个唯一字符串,我需要一个唯一的long值。仅此而已。

在将其更改为Long之前,必须先将其转换为Date

SimpleDateFormat format = new SimpleDateFormat("dd-MM-yy");
Date d = format.parse("01-09-2015");
long milliseconds = d.getTime();

在将其更改为Long之前,必须先将其转换为Date

SimpleDateFormat format = new SimpleDateFormat("dd-MM-yy");
Date d = format.parse("01-09-2015");
long milliseconds = d.getTime();

我建议您在
-
上拆分输入,然后将三个日期部分转换为
int
;然后将它们连接成一个
long
。大概

String date = "01-09-2015";
String[] arr = date.split("-");
int yyyy = Integer.valueOf(arr[2]);
int mm = Integer.valueOf(arr[0]);
int dd = Integer.valueOf(arr[1]);
long dateLong = (yyyy * 10000) + (mm * 100) + dd;
System.out.println(dateLong);
输出是(唯一的,每个日期)

注意这与;维基百科的链接文章(部分)说

ISO 8601数据元素和交换格式–信息交换–日期和时间的表示是一项涵盖日期和时间相关数据交换的国际标准


我建议您在
-
上拆分输入,然后将三个日期部分转换为
int
;然后将它们连接成一个
long
。大概

String date = "01-09-2015";
String[] arr = date.split("-");
int yyyy = Integer.valueOf(arr[2]);
int mm = Integer.valueOf(arr[0]);
int dd = Integer.valueOf(arr[1]);
long dateLong = (yyyy * 10000) + (mm * 100) + dd;
System.out.println(dateLong);
输出是(唯一的,每个日期)

注意这与;维基百科的链接文章(部分)说

ISO 8601数据元素和交换格式–信息交换–日期和时间的表示是一项涵盖日期和时间相关数据交换的国际标准



你期望什么价值?因为前导零不能存储在
Long
中。我需要为转换的每个日期提供一些唯一的值。若日期相同,则应出现相同的值。我传递的唯一字符串的唯一值。对于
“01-09-2015”
,该值是多少?您考虑过20150109吗?您想做什么?
一切都返回be NumberFormatException
,因为“08-01-2015”不是一个有效的数字。您希望得到什么值?因为前导零不能存储在
Long
中。我需要为转换的每个日期提供一些唯一的值。若日期相同,则应出现相同的值。我传递的唯一字符串的唯一值。对于
“01-09-2015”
,该值是多少?您考虑过20150109吗?你想做什么?
一切都返回be NumberFormatException
,因为“08-01-2015”不是一个有效的数字。如果OP需要毫秒,这篇文章中没有提到。@MouseEvent他在评论中提到,他只需要为每个日期指定一个唯一的值。毫秒将满足这一要求。因此可以这样做:
long value=1092015L
?如果OP需要毫秒,那么帖子中没有提到它。@MouseEvent他在评论中提到,他只需要为每个日期指定一个唯一的值。毫秒将满足此要求。因此可以这样做:
long value=1092015L
?毫秒转换将不是唯一的?只是一个疑问。你没有毫秒的值;会有很多零。自1970年1月1日以来,毫秒的数量非常大(因为那是一个新纪元)。毫秒转换不会是唯一的吗?只是一个疑问。你没有毫秒的值;会有很多零。自1970年1月1日以来,毫秒数非常大(因为那是一个新纪元)。