我们在数据库中存储了间隔(两个Oracle时间戳之间的经过时间),以秒为单位,并且在前端使用Java对其进行了格式化。

我们将在报告中实现的格式为" HH:MM"或" HH:MM:SS",其中时间分隔符":"在日期和时间信息(即"。")中进行了本地化。 代表意大利语,":"代表英语。

不幸的是,与日期相关的格式设置类(例如SimpleDateFormat)无法正常运行**,因为我们可以期望持续时间超过24小时。

我们也不想使用3rdy party库。

您知道我们如何解决这个问题吗?

TIA

仅供参考,ISO 8601标准为持续时间PnYnMnDTnHnMnS定义了一种合理的格式。 必需的P从每个实例开始,并且T将日期部分与时间部分分开。 解决了混淆混淆格式的一天的时间,而不是持续时间的歧义问题。 解决了24小时问题,因为这种格式不受24小时惯例的限制。 然后,您可以根据需要将值标准化。 例如,您可以在PT48H或P2D之间选择。

顺便说一句,如果您愿意考虑使用外部库,Joda-Time库将在解析和生成日期时间值的字符串表示形式时将ISO 8601标准作为其默认值。 这包括我在上面的注释中描述的持续时间格式。

如果要使用24小时以上的时间,则可以单独打印。

int hour = time / 3600000;

String duration = time + new SimpleDateFormat(":mm:ss").format(new Date(time));

为了支持其他语言环境,您可以执行此更复杂的示例。

int hour = time / 3600000;

String duration = hour

+ DateFormat.getDateInstance(DateFormat.MEDIUM, locale)

.format(new Date(time % 3600000).substring(1);

这样做是将语言环境特定的格式用于小时的最后一个数字+分钟+秒,并在小时的其他数字前加上数字。 注意:这在负数时间无效。

当然这是微不足道的。 但这不是本地化的! 您如何对任何语言环境进行类似DateFormat.getDateInstance(DateFormat.MEDIUM,locale)的操作?

@nagylzs您能举一个HH:MM:SS打印方式不同的语言环境示例吗?

意大利人?pic.dhe.ibm.com/infocenter/forms/v3r5m1/

也许我误解了OPs的问题,它不是关于将时间间隔本地化为GIVEN语言环境,而是将当前时间间隔转换为CURRENT语言环境。

@nagylzs我已经更新了我的答案,谢谢你的建议。

是的,我注意到了更多事情:DateFormat.MEDIUM有时会在小时部分使用" h"而不是" H",这是错误的,因为17变为下午5点。 是的,您还需要增加对负间隔的支持。 因此,无法使用两行代码来实现功能全面的解决方案。:-)

您可以构造一个日期对象,说" 2000-01-01",然后在其中添加秒数。 然后,您可以使用它来提取时间的本地化版本:

DateFormat format = DateFormat.getTimeInstance(DateFormat.MEDIUM, locale);

String formatted_time_part = format.format(some_date_object);

最后,您仍然需要添加经过的天数! 我很遗憾,长间隔(几天,几个月,几年,几个世纪)的本地化在Java中没有相应的API,但我可能是错的。 因此,您必须自己弄清楚这一点。

java格式化时间间隔_用Java本地化格式化时间间隔相关推荐

  1. bigint对应java什么类型_「JAVA」从格式化输出到扫描输入,深究Java正则表达式匹配之道

    字符串是不可变的 字符串是不可变的,也就是说当字符串的内容发生改变的时候,会创建一个新的String对象:但是如果内容没有发生改变的时候,String类的方法会返回原字符串对象的引用. 而正则表达式往 ...

  2. java格式化星期_在Java中使用SimpleDateFormat格式化星期几

    Java日期中使用E格式来格式化星期一,星期二,星期三等星期几.让我们使用它.//显示星期几 SimpleDateFormat simpleformat = new SimpleDateFormat( ...

  3. java 月份缩写_关于java:如何将日期字符串解析为Date?

    本问题已经有最佳答案,请猛点这里访问. 如何将下面的日期字符串解析为Date对象? String target ="Thu Sep 28 20:29:30 JST 2000"; D ...

  4. str. 在java什么意思_在JAVA里timestr表示什么意思

    满意答案 没具体代码,看不懂,不过根据命名的规范,可以猜测是和时间有关系的字符串 tiem + string = timestr 可能是对日期类型转换到字符串类型的一个存储变量 例子 package ...

  5. java 函数 微秒_在Java中以微秒为单位解析时间

    我在解析2013-01-09 09:15:03.000000格式的Java时间字符串时遇到问题. 在我的数据中,最后三个数字始终为0(表示输入字符串仅具有毫秒精度),因此我将此格式传递给SimpleD ...

  6. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  7. 纯java分布式内存数据库_最新Java岗面试清单:分布式+Dubbo+线程+Redis+数据库+JVM+并发...

    最近可能有点闲的慌,没事就去找面试面经,整理了一波面试题.我大概是分成了Java基础.中级.高级,分布式,Spring架构,多线程,网络,MySQL,Redis缓存,JVM相关,调优,设计模式,算法与 ...

  8. java多线程编程_《java多线程编程实战指南》读书笔记 -- 基本概念

    展开 并发:多个线程操作相同资源,保证线程安全,合理使用资源 高并发:服务能同时处理多个请求,提高程序性能 测试上下文切换工具 Lmbench3 测量上下文切换时长 vmstat 测量上下文切换次数 ...

  9. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

  10. java 包命名_【Java】包的命名规则

    命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...

最新文章

  1. C#的6种常用集合类大比拼【月儿原创】
  2. FPGA之道(2)FPGA应用方向
  3. Ubuntu使用技巧(一)
  4. 使用Google Cloud Platform分散您的应用程序
  5. python time时间戳_time和datetime时间戳---python
  6. python美多商城项目百度网盘_美多商城项目(六)
  7. 适配器模式 Adapter Pattern
  8. element表格图片放大_利用element-ui怎么实现一个点击放大图片功能
  9. 鼠标悬停在图片上出现蒙层的方法
  10. mt4代理服务器存放文件,MT4指标EA DLL等文件放置目录
  11. 2021高考厦门一中成绩查询,2021年厦门中考成绩排名查询,厦门中考个人成绩排名查询...
  12. Fortran common
  13. Java 继承思想 及其在 Minecraft mod中相关应用
  14. 1564 区间的价值
  15. ODC V3.2.0 新版本发布 | 着重用户体验,挑战权限管控业务场景
  16. 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
  17. ASEM工控机触摸屏维修OT1200-SL北京
  18. 深入理解Java注解(二)——JavaPoet使用
  19. GIS经纬度坐标转换为unity3D的世界坐标
  20. 关于c++中缺省问题的总结

热门文章

  1. B. Dubious Cyrpto(思维+枚举)
  2. 最近在读的一些文章-2019.04
  3. 浅谈支付宝第三方支付
  4. Java面试题(一)100家大公司java笔试题汇总
  5. 四舍六入c语言公式,【测绘专用】四舍六入五成双的C++实现
  6. mRNA数据分析专题
  7. shell softech 面料_MAMMUT猛犸象的黑科技大军(服装篇)
  8. 2022P气瓶充装判断题及在线模拟考试
  9. ospf-NBMA基本配置
  10. 基于互联云及多云的云化基础设施算力调度