Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将MM/dd/yyyy hh:MM a格式转换为毫秒_Android_Date_Google Calendar Api - Fatal编程技术网

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

Android 将MM/dd/yyyy hh:MM a格式转换为毫秒,android,date,google-calendar-api,Android,Date,Google Calendar Api,我正在尝试将我收到的MM/dd/yyyy hh:MM a格式的日期和时间转换为毫秒,这样我就可以在谷歌日历中将日期推送为结束日期。我尝试下面的代码,但我得到的错误 代码: 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()

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

代码:

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)
错误:

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)

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

所有日期在内部均以UTC表示 .getTime()返回自UTC 1970-01-01 00:00:00以来的毫秒数。 包se.wederbrand.ms

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());        
    }
}
通过这个

试试这个

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

您的代码似乎正常,我刚刚添加了
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);
    }
此代码将1508479800000打印为
millis
。如果要向后检查,请尝试以下操作:

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

这将为您提供
2017年10月20日上午8:10

请尝试使用“MM/dd/yyyy k:MM a”我认为您的myDate的给定值与日期格式化程序不完全一致。尝试将您的myDate更改为“10/20/2017 08:10 AM”,因为您使用的是
hh
@Jerrol我尝试了您的建议,但仍然得到相同的错误。@Cata我尝试了您所说的,仍然存在问题。您发布的代码工作正常。当您运行精确的代码时是否出现此错误?我已经在使用
SimpleDataFormat
。请检查我的输入值。你可以再试一次。我得到的仍然是同一个问题。你能告诉我我得到的号码是否太长吗?你可以再试一次。