【发布时间】:2014-03-28 15:53:33
【问题描述】:
我有以下字符串02/11/2012 23:11
有什么方法可以将其转换为long 021120122311l?
我正在尝试根据对象的创建日期将对象映射到数组中的特定位置。
【问题讨论】:
-
注意 a 改变了这个问题的标题。将日期表示为毫秒以来的纪元需要
long原语,而不是int。
标签: java arrays date type-conversion
我有以下字符串02/11/2012 23:11
有什么方法可以将其转换为long 021120122311l?
我正在尝试根据对象的创建日期将对象映射到数组中的特定位置。
【问题讨论】:
long 原语,而不是 int。
标签: java arrays date type-conversion
您可以使用 SimpleDateFormat 将其生成为不带任何符号的字符串,然后使用 Long 类解析 long 值
SimpleDateFormat s1 = new SimpleDateFormat("dd/MM/yyyy HH:mm");
SimpleDateFormat s2 = new SimpleDateFormat("ddMMyyyyHHmm");
Date d = s1.parse("02/11/2012 23:11");
String s3 = s2.format(d);
System.out.println(s3);
long l = Long.parseLong(s3);
System.out.println(l);
【讨论】:
HH 而不是hh。
你可以试试这个
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm");
Date inputDate;
try {
inputDate = simpleDateFormat.parse("02/11/2012 23:11");
System.out.println(inputDate.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
输出:
1351878060000
【讨论】:
试试这个,
String dateValue = "02/11/2012 23:11";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date date = simpleDateFormat.parse(dateValue);
simpleDateFormat = new SimpleDateFormat("ddMMyyyyHHmm");
String value = simpleDateFormat.format(date);
Long result = Long.parseLong(value);
System.out.println("Result : "+result);
【讨论】:
时区对于将字符串解析为日期时间值至关重要,除非您绝对确定所有字符串都代表发生在同一时区的日期时间。
Joda-Time 使这项工作变得更加容易。
DateTimeFormatter formatter = DateTimeFormat.forPattern( "dd/MM/yyyy hh:mm" );
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime dateTime = formatter.withZone( timeZone ).parseDateTime( myString );
long millisecondsSinceEpoch = dateTime.getMillis();
【讨论】: