将MM/dd/yyyyhh:mm格式转换为毫秒
Convert MM/dd/yyyy hh:mm a format to milliseconds
我正在尝试将收到的 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)
您可以使用 SimpleDateFormat 来完成。你只需要知道两件事。
所有日期均以 UTC 内部表示
.getTime() returns 自 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());
}
}
由这个
试试这个。
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()));
这会给你 10/20/2017 08:10 AM
.
我正在尝试将收到的 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)
您可以使用 SimpleDateFormat 来完成。你只需要知道两件事。
所有日期均以 UTC 内部表示 .getTime() returns 自 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());
}
}
由这个
试试这个。
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()));
这会给你 10/20/2017 08:10 AM
.