Android 获取date.gettime()中的负值
当我试图将字符串值解析为date时,当我尝试执行date.getTime()时,我得到的是负值 这是我正在解析的字符串“01:00:07”。 这是日期对象中的值,我得到“Thu Jan 01:00:07 GMT+05:30 1970”。 还在getTime()中,我得到了负值“-16193000” 实现此目标的代码:Android 获取date.gettime()中的负值,android,date,simpledateformat,datetime-format,Android,Date,Simpledateformat,Datetime Format,当我试图将字符串值解析为date时,当我尝试执行date.getTime()时,我得到的是负值 这是我正在解析的字符串“01:00:07”。 这是日期对象中的值,我得到“Thu Jan 01:00:07 GMT+05:30 1970”。 还在getTime()中,我得到了负值“-16193000” 实现此目标的代码: long sum = 0; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm:ss");//
long sum = 0;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm:ss");// I have also tried "HH:mm:ss" format. it gives same result
Date date = simpleDateFormat.parse(duration);//duration is "01:00:07"
sum= date.getTime();
simpleDataFormat.setTimeZone(TimeZone.getTimeZone(“GMT”)
您必须添加您的时区simpleDateFormat.setTimeZone(timezone.getTimeZone(“GMT”)代码>您必须添加时区问题是时区偏移。使用:
long sum = 0;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm:ss");// I have also tried "HH:mm:ss" format. it gives same result
Date date = null;//duration is "01:00:07"
try {
date = simpleDateFormat.parse("01:00:07");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
sum= cal.getTimeInMillis() + (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET));
System.out.println("Date =" + date);
System.out.println("sum =" + sum);
} catch (ParseException e) {
e.printStackTrace();
}
问题是时区偏移。使用:
long sum = 0;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm:ss");// I have also tried "HH:mm:ss" format. it gives same result
Date date = null;//duration is "01:00:07"
try {
date = simpleDateFormat.parse("01:00:07");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
sum= cal.getTimeInMillis() + (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET));
System.out.println("Date =" + date);
System.out.println("sum =" + sum);
} catch (ParseException e) {
e.printStackTrace();
}
问题是时区
。通过提供时区
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
或
问题是时区。通过提供
时区
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
或
java.time
Duration
输出此奇数字符串:
PT1H7S
读作:1小时7秒的时间段
该字符串是标准格式的。Duration
只能解析标准格式。因此,我使用String.replaceFirst
将字符串转换为它
让我猜猜,你需要总结持续时间吗?有一种plus
方法:
Duration sum = Duration.ZERO;
sum = sum.plus(dur);
还有一些转换为秒或毫秒的方法
不要在持续时间内使用日期时间类。这将导致混乱和错误
如果您绝对不想要外部依赖项(只有在移动到API级别26之前),请手动将字符串解析为秒,并在int
中表示它们。将其包装在您自己的自定义类中
问题:我可以在Android上使用java.time吗?
是的,java.time在较旧和较新的Android设备上运行良好。它至少需要Java6
- 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
- 在Java6和Java7中,获取三个后端口,即新类的后端口(三个用于JSR310;请参阅底部的链接)
- 在(较旧的)Android上使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保从带有子包的
导入日期和时间类org.threeten.bp
- 解释如何使用
java.time
- ,其中首先描述了
java.time
- ,java.time的后端口到Java6和Java7(JSR-310为三十)
- ,Android版Three Ten Backport
- ,解释得非常透彻
Duration
输出此奇数字符串:
PT1H7S
读作:1小时7秒的时间段
该字符串是标准格式的。Duration
只能解析标准格式。因此,我使用String.replaceFirst
将字符串转换为它
让我猜猜,你需要总结持续时间吗?有一种plus
方法:
Duration sum = Duration.ZERO;
sum = sum.plus(dur);
还有一些转换为秒或毫秒的方法
不要在持续时间内使用日期时间类。这将导致混乱和错误
如果您绝对不想要外部依赖项(只有在移动到API级别26之前),请手动将字符串解析为秒,并在int
中表示它们。将其包装在您自己的自定义类中
问题:我可以在Android上使用java.time吗?
是的,java.time在较旧和较新的Android设备上运行良好。它至少需要Java6
- 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
- 在Java6和Java7中,获取三个后端口,即新类的后端口(三个用于JSR310;请参阅底部的链接)
- 在(较旧的)Android上使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保从带有子包的
导入日期和时间类org.threeten.bp
- 解释如何使用
java.time
- ,其中首先描述了
java.time
- ,java.time的后端口到Java6和Java7(JSR-310为三十)
- ,Android版Three Ten Backport
- ,解释得非常透彻
java.util.date
、java.util.Calendar
、和java.text.SimpleDateFormat
等麻烦的旧日期-时间类现在是遗留的,被这些类所取代。大部分java.time功能都在项目中被向后移植到Java6和Java7。进一步适应早期Android(sum的数据类型是什么?希望你把它当作LongSum的数据类型是longyou在哪个时区?日期和持续时间是两个完全不同的野兽。你的问题是你把一个错误地用在了另一个上。例如,请参见FYI,一些麻烦的旧日期时间类,如java.util.Date
,java.util.Calendar
和java.text.SimpleDateFormat
现在是遗留的,被类所取代。大多数java.time功能在项目中被向后移植到java 6和java 7。进一步适用于早期的Android(在12:00:07
的情况下,hh
和hh
不会给出相同的结果。在12:00:07
的情况下,hh
和hh
不会给出相同的结果。