在Java中将日期字符串转换为毫秒

如何将将来的日期(例如2012年2月17日星期六)转换为毫秒数,然后从java中的当前时间中减去该毫秒数,从而得出到该未来日期为止的剩余时间。

回答:

最简单的技术是使用DateFormat

String input = "Sat Feb 17 2012";

Date date = new SimpleDateFormat("EEE MMM dd yyyy", Locale.ENGLISH).parse(input);

long milliseconds = date.getTime();

long millisecondsFromNow = milliseconds - (new Date()).getTime();

Toast.makeText(this, "Milliseconds to future date="+millisecondsFromNow, Toast.LENGTH_SHORT).show();

一种更困难的技术(基本上可以DateFormat为您做些什么)涉及您自己解析(这 被视为 最佳实践 ):

String input = "Sat Feb 17 2012";

String[] myDate = input.split("\\s+");

int year = Integer.parseInt(myDate[3]);

String monthString = myDate[1];

int mo = monthString.equals("Jan")? Calendar.JANUARY :

monthString.equals("Feb")? Calendar.FEBRUARY :

monthString.equals("Mar")? Calendar.MARCH :

monthString.equals("Apr")? Calendar.APRIL :

monthString.equals("May")? Calendar.MAY :

monthString.equals("Jun")? Calendar.JUNE :

monthString.equals("Jul")? Calendar.JULY :

monthString.equals("Aug")? Calendar.AUGUST :

monthString.equals("Sep")? Calendar.SEPTEMBER :

monthString.equals("Oct")? Calendar.OCTOBER :

monthString.equals("Nov")? Calendar.NOVEMBER :

monthString.equals("Dec")? Calendar.DECEMBER : 0;

int day = Integer.parseInt(myDate[2]);

Calendar c = Calendar.getInstance();

c.set(year, mo, day);

long then = c.getTimeInMillis();

Time current_time = new Time();

current_time.setToNow();

long now = current_time.toMillis(false);

long future = then - now;

Date d = new Date(future);

//TODO use d as you need.

Toast.makeText(this, "Milliseconds to future date="+future, Toast.LENGTH_SHORT).show();

以上是 在Java中将日期字符串转换为毫秒 的全部内容, 来源链接: utcz.com/qa/414533.html

回到顶部