Java 将ISO日期字符串转换为时间戳
它给出了一个错误java.text.ParseException:不可解析日期:2018-07-29T09:50:49+05:30Java 将ISO日期字符串转换为时间戳,java,datetime,Java,Datetime,它给出了一个错误java.text.ParseException:不可解析日期:2018-07-29T09:50:49+05:30 知道我在这里遗漏了什么吗?在这种情况下,新的API变得更加简单。您的模式是java.time.zoneDateTime的默认格式: 你可以试试这样的 ZonedDateTime date = ZonedDateTime.parse("2018-07-29T09:50:49+05:30") 用于解析的格式也有毫秒 String time="2018-0
知道我在这里遗漏了什么吗?在这种情况下,新的API变得更加简单。您的模式是java.time.zoneDateTime的默认格式:
你可以试试这样的
ZonedDateTime date = ZonedDateTime.parse("2018-07-29T09:50:49+05:30")
用于解析的格式也有毫秒
String time="2018-07-29T09:50:49+05:30";
ZonedDateTime date = ZonedDateTime.parse(time);
System.out.println(date);
String TAG = "Extra";
System.out.println(TAG + "Start: " + date.getDayOfMonth());
System.out.println(TAG + "Start: " + date.toLocalDateTime());
System.out.println(TAG + "Start: " + date.getHour() + ":" + date.getMinute()) ;
你需要把它改成
final String TIMESTAMP_FORMATE = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";
我尝试了下面的例子,效果很好:
final String TIMESTAMP_FORMATE = "yyyy-MM-dd'T'HH:mm:ss.XXX";
输出:
您可以使用此方法获取日期和时间: 下面是日期的不同格式,您可以使用自己的格式并将其作为参数传递给方法
ExtraStart: 1532838049000
ExtraStart: 29
ExtraStart: 9:1532838049000
只需以当前格式传递日期,并以您期望的格式传递日期,它就会相应地返回给您。如果您只需要时间,您可以使用此方法获得,您需要根据您的需求实现它。因此,如果您的输入中缺少.SSS,您可能应该使用Joda timemilliseconds@AlmasAbdrazakJoda时间库在Java 8中提供,在java.util.time包下,我建议您避免使用SimpleDataFormat类。它不仅早已过时,而且还出了名的麻烦。今天我们的生活好多了。正如Yy在一个不是答案的答案中所说的,绝对不要使用不推荐使用的日期方法getDate和getHours,它们不可靠。很好,除非使用OffsetDateTime更好,因为字符串有偏移量且没有时区。很好,除非使用OffsetDateTime更好,因为字符串有偏移量且没有时区。您可以编辑您的答案,而不是删除旧答案并发布新答案。
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test{
public static void main(String[] args) {
String startDate="2018-07-29T09:50:49+05:30";
String TAG = "Extra";
final String TIMESTAMP_FORMATE = "yyyy-MM-dd'T'HH:mm:ssXXX" ;
DateFormat df = new SimpleDateFormat(TIMESTAMP_FORMATE);
try {
Date date = df.parse(startDate);
System.out.println(TAG + "Start: " + date.getTime());
System.out.println(TAG + "Start: " + date.getDate());
System.out.println(TAG + "Start: " + date.getHours() + ":" + date.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
}
}
ExtraStart: 1532838049000
ExtraStart: 29
ExtraStart: 9:1532838049000
public String localFormat = "yyyy-MM-dd HH:mm";
public String alarmFormat = "yyyy-MM-dd-HH-mm";
public String defaultFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
public String calendarFormat = "yyyy-M-d";
public String calendarFormatCh = "yyyy-M-dd";
public String calendarFormatRc = "yyyy-MM-dd";
public String reminderFormat = "dd/MM/yyyy hh:mm a";
public String getFormattedDate(Context mcontext, String date, String currFormat, String RequireFormat) {
Utils.e(Tag + "750", currFormat + "date " + date);
SimpleDateFormat sdf = new SimpleDateFormat(currFormat);
SimpleDateFormat sdfReq = new SimpleDateFormat(RequireFormat);
long time = 0;
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
try {
time = sdf.parse(date).getTime();
return sdfReq.format(time).toString();
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}