我从DB获取日期值为长值。我将其转换为字符串以使用解析函数。以下是我的代码
Date date1 = new SimpleDateFormat("MM/dd/yyyy").parse(strDate1);
但是当执行此代码时应用程序崩溃。如果
,将成功执行strDate1="12/30/2012".
但我将此值设为“ 12302012235 ”(pzudo值)。
我该怎么做?
编辑
我将日期值保存为DB为INTEGER。从DB我得到这个值并转换为string.this是实际的strDate1值
strDate1="1346524199000"
答案 0 :(得分:5)
尝试以下代码段:
Calendar c = Calendar.getInstance();
c.setTimeInMillis(Long.parseLong(val));
Date d = (Date) c.getTime();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
String time = format.format(d);//this variable time contains the time in the format of "day/month/year".
答案 1 :(得分:2)
试试这个,
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
Date dateD=new Date();
dateD.setTime(LongTime);
date=dateFormat.format(dateD);
答案 2 :(得分:1)
Java 8 ,按给定的日期格式模式将毫秒转换为Date作为String。如果你有一个很长的毫秒,并希望在指定时区和模式时将它们转换为日期字符串,那么你可以使用它: -
dateInMs 是DateTime的长值。
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
.format(Instant.ofEpochMilli(dateInMs).atZone(ZoneId.of("Europe/London")))
答案 3 :(得分:1)
java.util
日期时间 API 及其格式化 API SimpleDateFormat
已过时且容易出错。建议完全停止使用它们并切换到 modern date-time API* 。
使用现代日期时间 API:
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
long input = 12302012235L;
// Get Instant from input
Instant instant = Instant.ofEpochMilli(input);
System.out.println(instant);
// Convert Instant to ZonedDateTime by applying time-zone
// Change ZoneId as applicable e.g. ZoneId.of("Asia/Dubai")
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
System.out.println(zdt);
// Format ZonedDateTime as desired
// Check https://stackoverflow.com/a/65928023/10819573 to learn more about 'u'
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM/dd/uuuu", Locale.ENGLISH);
String formatted = dtf.format(zdt);
System.out.println(formatted);
// If at all, you need java.util.Date
Date date = Date.from(instant);
}
}
输出:
1970-05-23T09:13:32.235Z
1970-05-23T10:13:32.235+01:00[Europe/London]
05/23/1970
从 Trail: Date Time 了解有关现代日期时间 API 的更多信息。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。
答案 4 :(得分:0)
试试这个
Date date1 = new SimpleDateFormat("MMddyyyySSS").parse(strDate1);
希望它适用于12302012235,但我认为235是毫秒。
答案 5 :(得分:0)
您可以尝试以下代码:
private Date getGMTDate(long date) {
SimpleDateFormat dateFormatGmt = new SimpleDateFormat(
"yyyy-MMM-dd HH:mm:ss");
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
SimpleDateFormat dateFormatLocal = new SimpleDateFormat(
"yyyy-MMM-dd HH:mm:ss");
Date temp = new Date(date);
try {
return dateFormatLocal.parse(dateFormatGmt.format(temp));
} catch (ParseException e) {
e.printStackTrace();
}
return temp;
}
我希望这会对你有所帮助。
答案 6 :(得分:0)
我得到了答案。实际上我想将字符串转换为日期仅用于比较values.since我得到的值只要我直接使用compareTo函数来执行此操作。允许将long转换为字符串和字符串到目前为止转换。谢谢大家的支持。