java解析时间字符串_在Java中解析时间字符串(Parsing in time string in Java)

在Java中解析时间字符串(Parsing in time string in Java)

我有一个规范,它会在成功交易后返回付款历史JSON。 第三方JSON响应具有交易所用总时间的字段。 例如,在执行付款历史记录时花费的总时间是“00:10:10.0”。 如何将此String对象格式转换为整数原语。

I have a specification which would return the payment history JSON after successful transaction. 3rd party JSON response has a field for the total time taken for the transaction. As example total time spent while doing the payment history was "00:10:10.0". How do I convert this format this String object to integer primitive.

原文:https://stackoverflow.com/questions/26796109

2020-08-17 10:08

满意答案

如果您不介意使用外部库,那么使用Joda的 org.joda.time.LocalTime可以帮助进行字符串解析:

String duration = "00:10:10.0";

int seconds = LocalTime.parse(duration).getMillisOfDay() / 1000;

//returns 610

请注意,由于您遵守ISO格式,因此您甚至不需要明确指定解析后的格式。

此外,如果您已经使用Java 8,那么Joda被用作那里可用的新日期/时间库的灵感,因此您将在标准库中找到类似的类: LocalTime

If you don't mind using external library, then using Joda's org.joda.time.LocalTime can help with the string parsing:

String duration = "00:10:10.0";

int seconds = LocalTime.parse(duration).getMillisOfDay() / 1000;

//returns 610

Please note, that since you're complying to ISO formatting you don't even need to explicitly specify the parsed format.

Also, if you're using Java 8 already, than Joda was used as an inspiration for the new date/time library available there, therefore you'll find a similar class in the standard library: LocalTime

2014-11-07

相关问答

这可能对你有所帮助! SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy a hh:mm");

String dateInString1 = "04 Dec 2014 pm 1:58";

try {

Date date = formatter.parse(dateInString1);

System.out.println(date);

...

一个可能的解决方案是使用默认值的可选模式。 使用DateTimeFormatterBuilder ,您可以在可选部分追加想要的模式和时间部分,即[...]包围。 在字段不存在的情况下,我们通过将它们设置为0来提供默认值OFFSET_SECONDS字段为0表示没有与UTC的偏移。 public static void main(String[] args) {

String[] dates = { "2012-01-05T21:21:52.834Z", "2012-01-05" };

...

如果仔细查看错误消息,您会看到它说: Text '2018-01-23T12' could not be parsed at index 10这意味着问题在于格式中的T. 如果我们回到DateTimeFormatterBuilder ,指定的模式是: "uuuu-MM-dd HH" 。 这是问题,当事实上有一个T时,它指定了一个空间。解决方法是用下面的代码来替换这个模式: "uuuu-MM-dd'T'HH" String input = "2018-01-23T12";

DateTimeForm...

我认为错误可能来自Logger。它与语言环境无关。 Date date = new Date();

SimpleDateFormat US_format = new SimpleDateFormat("MMM d HH:mm:ss z", Locale.US);

SimpleDateFormat EN_format = new SimpleDateFormat("MMM d HH:mm:ss z", Locale.ENGLISH);

String US_str =...

有两种不同的方式来回答你的问题,具体取决于你真正想要什么样的行为。 回答#1:正如其他人指出的那样,您的字符串(解释为正整数十六进制)对于Java long类型来说太大了。 所以如果你真的需要(正)整数,那么你需要使用一个不同的类型,可能是java.math.BigInteger ,它也有一个构造函数,它带一个String和一个基数。 答案2:不过,我想知道,如果你的字符串代表long的“原始”字节。 在你的例子中,它将代表一个负数。 如果是这样的话,那么Java的内置long解析器不会处理设置了...

我访客那个birthcal是java.util.Calendar类的对象引用(我看不到引用的定义)。 如果你改变你的最后一行(birthcal.setTime(birth);) 至: Calendar birthcal = Calendar.getInstance();

birthcal.setTime(birth);

你不会有问题。 如果你走 Calendar birthcal = null;

birthcal.setTime(birth);

你会得到java.lang.NullPointe...

您可以执行多个拆分,首先将时间与电话号码分开,然后将每个拆分分开。 例如: Scanner sc = new Scanner(inputStr);

while (sc.hasNextLine()) {

String line = sc.nextLine();

String parts[] = line.split(",");

String time[] = parts[0].split(":");

String phone[] = parts[1].split("...

System.out.println(LocalDateTime.parse(

"19940513230000",

new DateTimeFormatterBuilder()

.appendPattern("[uuuuMMddHHmmss][uuuuMMdd]")

.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)

...

你可以用正则表达式来完成它: import java.util.regex.*;

class A {

public static void main(String[] args) {

String s = "this is a good example with 234 songs";

Pattern p = Pattern.compile("this is a (.*?) example with (\\d+)...

如果您不介意使用外部库,那么使用Joda的 org.joda.time.LocalTime可以帮助进行字符串解析: String duration = "00:10:10.0";

int seconds = LocalTime.parse(duration).getMillisOfDay() / 1000;

//returns 610

请注意,由于您遵守ISO格式,因此您甚至不需要明确指定解析后的格式。 此外,如果您已经使用Java 8,那么Joda被用作那里可用的新日期/时间库的灵感,因此您将...

相关文章

Java String类 字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提

...

Java 获取字符串中第N次出现的字符位置的背景:截取字符串的时候,大家应该都是str.substri

...

今天遇见一个问题.不知道怎么解决. 如: 自己建立了一个文件read.txt 里面存放这样的 键值

...

命令格式: SET key value 把字符串值value存储到key中。如果存在此key,SE

...

源字符串 22:w,22:c,21:r,7:r,7:w,7:c,8:w,8:c,8:d,9:r,9:w

...

相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志

...

查jdk的api你可以发现split的参数是正则表达式,如果你直接使用.或|来切分,是不对的

解决方案

...

里面有些公式和矩阵无法在电脑上书写, 故用纸笔记录了一些笔记, 比如公式的推算, 注意要点等. 由于电

...

http://engineering.linkedin.com/distributed-systems

...

用mybatis查询时,传入一个字符串传参数,且进行判断时,会报 There is no get

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值