将MM / dd / yyyy hh:mm格式转换为毫秒

时间:2017-10-13 14:19:04

标签: android date google-calendar-api

我正在尝试将我收到的日期和时间 MM / dd / yyyy hh:mm a 格式转换为毫秒,以便我可以将日期作为结束日期推送到Google日历中。我正在尝试下面的代码,但我收到错误。

代码:

String myDate = "10/20/2017 8:10 AM";
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
Date date = sdf.parse(myDate);
long millis = date.getTime();

错误:

java.text.ParseException: Unparseable date: "10/20/2017 8:10 AM" (at offset 16)

3 个答案:

答案 0 :(得分:3)

试试这个。

String myDate = "10/20/2017 8:10 AM";
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy h:mm a", Locale.ENGLISH);
Date date = sdf.parse(myDate);
long millis = date.getTime();

在您的代码中添加Locale.ENGLISH

答案 1 :(得分:0)

您的代码似乎没问题,我刚刚添加了try/catch阻止:

try {
    String myDate = "10/20/2017 8:10 AM";
    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
    Date date = sdf.parse(myDate);
    long millis = date.getTime();

    System.out.println(date);
    System.out.println(millis);
    }
    catch(Exception ex) {
        System.out.println(ex);
    }

此代码以millis打印1508479800000。如果你想向后检查,试试这个:

String x = "1508479800000";

            DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm a");

            long milliSeconds= Long.parseLong(x);
            System.out.println(milliSeconds);

            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(milliSeconds);
            System.out.println(formatter.format(calendar.getTime())); 

这会给你10/20/2017 08:10 AM

答案 2 :(得分:-1)

您可以使用SimpleDateFormat来执行此操作。你只需知道两件事。

所有日期均以UTC格式表示 .getTime()返回自1970-01-01 00:00:00 UTC以来的毫秒数。 包se.wederbrand.milliseconds;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class Main {        
    public static void main(String[] args) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

        String inputString = "00:01:30.500";

        Date date = sdf.parse("1970-01-01 " + inputString);
        System.out.println("in milliseconds: " + date.getTime());        
    }
}

这一个https://stackoverflow.com/a/8826392/8456432