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

时间:2011-12-08 06:40:08

标签: java android datetime

  

可能重复:
  Calculate date/time difference in java

将如何将2012年2月17日星期六的未来日期转换为java中的毫秒数,然后可以从当前时间中减去毫秒数,以产生直到该未来日期的剩余时间。

6 个答案:

答案 0 :(得分:21)

最简单的方法是使用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为你做的事情)涉及自己解析(这会被视为最佳实践):< / p>

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();

答案 1 :(得分:4)

Firts,您必须解析String以获取其Date表示。 Here是示例和一些文档。 然后你应该调用你的日期的getTime()方法。

答案 2 :(得分:4)

DateFormat format = new SimpleDateFormat("EEE MMM dd yyyy", Locale.US);
long futureTime = 0;
try {
    Date date = format.parse("Sat Feb 17 2012");
    futureTime = date.getTime();
} catch (ParseException e) {
    Log.e("log", e.getMessage(), e);
}

long curTime = System.currentTimeMillis();
long diff = futureTime - curTime;

答案 3 :(得分:2)

在此代码的日期传递未来日期的年,月和日,变量diff将给出该日期之前的毫秒时间,

    Date date = new GregorianCalendar(year, month, day).getTime();
    Date today = new Date();
    long diff = date.getTime() - today.getTime();

答案 4 :(得分:1)

您可以简单地调用date对象的getTime()方法。请按照下面的示例进行操作

import java.util.Date;

public class Test {
    @SuppressWarnings("deprecation")
    public static void main(String[] args) {

        System.out.println(new Date("Sat Feb 17 2012").getTime());

    }

}

答案 5 :(得分:1)

    try {  String str_date="11-June-07";
    SimpleDateFormat formatter ; 
    Date date ; 
    formatter = new SimpleDateFormat("dd-MMM-yy");
    date = (Date) formatter.parse(str_date);  
    Log.i("test",""+date);
    } catch (Exception e)
    {System.out.println("Exception :"+e);  }  

    Date d = new Date();
    long time = d.getTime();
    long timeDiff = time - lastTime;

//timeDiff will contain your value.
//import these two,
//import java.text.SimpleDateFormat;
//import java.util.Date;
相关问题