java把秒时长转换为分钟_java - 将秒值转换为小时分钟秒?-程序员宅基地

技术标签: java把秒时长转换为分钟  

java - 将秒值转换为小时分钟秒?

我一直在尝试将秒值(在BigDecimal变量中)转换为editText中的字符串,如“1小时22分33秒”或类似的东西。

我试过这个:

String sequenceCaptureTime = "";

BigDecimal roundThreeCalc = new BigDecimal("0");

BigDecimal hours = new BigDecimal("0");

BigDecimal myremainder = new BigDecimal("0");

BigDecimal minutes = new BigDecimal("0");

BigDecimal seconds = new BigDecimal("0");

BigDecimal var3600 = new BigDecimal("3600");

BigDecimal var60 = new BigDecimal("60");

(我有一个roundThreeCalc,这是秒的值,所以我尝试在这里转换它。)

hours = (roundThreeCalc.divide(var3600));

myremainder = (roundThreeCalc.remainder(var3600));

minutes = (myremainder.divide(var60));

seconds = (myremainder.remainder(var60));

sequenceCaptureTime = hours.toString() + minutes.toString() + seconds.toString();

然后我将editText设置为sequnceCaptureTime String。但那没用。 它每次强制关闭应用程序。 我完全超出了我的深度,非常感谢任何帮助。 快乐的编码!

18个解决方案

183 votes

是否有必要使用BigDecimal? 如果你没有,我会使用int或long for seconds,它会简化一些事情:

hours = totalSecs / 3600;

minutes = (totalSecs % 3600) / 60;

seconds = totalSecs % 60;

timeString = String.format("%02d:%02d:%02d", hours, minutes, seconds);

您可能想要填充每个以确保它们是字符串中的两位数值(或其他)。

Geobits answered 2019-04-10T11:36:36Z

53 votes

你应该有更多的运气

hours = roundThreeCalc.divide(var3600, BigDecimal.ROUND_FLOOR);

myremainder = roundThreeCalc.remainder(var3600);

minutes = myremainder.divide(var60, BigDecimal.ROUND_FLOOR);

seconds = myremainder.remainder(var60);

这将在每次除法后删除小数值。

编辑:如果这不起作用,试试这个。 (我刚刚编写并测试过它)

public static int[] splitToComponentTimes(BigDecimal biggy)

{

long longVal = biggy.longValue();

int hours = (int) longVal / 3600;

int remainder = (int) longVal - hours * 3600;

int mins = remainder / 60;

remainder = remainder - mins * 60;

int secs = remainder;

int[] ints = {hours , mins , secs};

return ints;

}

Haphazard answered 2019-04-10T11:36:04Z

52 votes

DateUtils.formatElapsedTime(long),格式化“MM:SS”或“H:MM:SS”形式的已用时间。 它返回您要查找的String。 你可以在这里找到文档

Blackbelt answered 2019-04-10T11:37:01Z

24 votes

这是工作代码:

private String getDurationString(int seconds) {

int hours = seconds / 3600;

int minutes = (seconds % 3600) / 60;

seconds = seconds % 60;

return twoDigitString(hours) + " : " + twoDigitString(minutes) + " : " + twoDigitString(seconds);

}

private String twoDigitString(int number) {

if (number == 0) {

return "00";

}

if (number / 10 == 0) {

return "0" + number;

}

return String.valueOf(number);

}

Rahim answered 2019-04-10T11:37:27Z

20 votes

Java 8中真正有用的东西

import java.time.LocalTime;

private String ConvertSecondToHHMMSSString(int nSecondTime) {

return LocalTime.MIN.plusSeconds(nSecondTime).toString();

}

Epicurist answered 2019-04-10T11:37:52Z

13 votes

我更喜欢java内置的TimeUnit库

long seconds = TimeUnit.MINUTES.toSeconds(8);

Ajji answered 2019-04-10T11:38:19Z

10 votes

private String ConvertSecondToHHMMString(int secondtTime)

{

TimeZone tz = TimeZone.getTimeZone("UTC");

SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");

df.setTimeZone(tz);

String time = df.format(new Date(secondtTime*1000L));

return time;

}

SKULL answered 2019-04-10T11:38:37Z

7 votes

这是我的简单解决方案:

String secToTime(int sec) {

int seconds = sec % 60;

int minutes = sec / 60;

if (minutes >= 60) {

int hours = minutes / 60;

minutes %= 60;

if( hours >= 24) {

int days = hours / 24;

return String.format("%d days %02d:%02d:%02d", days,hours%24, minutes, seconds);

}

return String.format("%02d:%02d:%02d", hours, minutes, seconds);

}

return String.format("00:%02d:%02d", minutes, seconds);

}

Test Results:

Result: 00:00:36 - 36

Result: 01:00:07 - 3607

Result: 6313 days 12:39:05 - 545488745

Shohan Ahmed Sijan answered 2019-04-10T11:39:10Z

3 votes

此代码工作正常:

txtTimer.setText(String.format("%02d:%02d:%02d",(SecondsCounter/3600), ((SecondsCounter % 3600)/60), (SecondsCounter % 60)));

Chathura answered 2019-04-10T11:39:35Z

2 votes

这是我解决问题的功能:

public static String getConvertedTime(double time){

double h,m,s,mil;

mil = time % 1000;

s = time/1000;

m = s/60;

h = m/60;

s = s % 60;

m = m % 60;

h = h % 24;

return ((int)h < 10 ? "0"+String.valueOf((int)h) : String.valueOf((int)h))+":"+((int)m < 10 ? "0"+String.valueOf((int)m) : String.valueOf((int)m))

+":"+((int)s < 10 ? "0"+String.valueOf((int)s) : String.valueOf((int)s))

+":"+((int)mil > 100 ? String.valueOf((int)mil) : (int)mil > 9 ? "0"+String.valueOf((int)mil) : "00"+String.valueOf((int)mil));

}

leokash answered 2019-04-10T11:40:02Z

2 votes

因此,我喜欢简单易懂:

int tot_seconds = 5000;

int hours = tot_seconds / 3600;

int minutes = (tot_seconds % 3600) / 60;

int seconds = tot_seconds % 60;

String timeString = String.format("%02d Hour %02d Minutes %02d Seconds ", hours, minutes, seconds);

System.out.println(timeString);

结果将是:01小时23分20秒

Nello answered 2019-04-10T11:40:36Z

2 votes

使用GregorianCalendar这是一个很好而且简单的方法

将这些导入项目:

import java.util.GregorianCalendar;

import java.util.Date;

import java.text.SimpleDateFormat;

import java.util.Scanner;

然后:

Scanner s = new Scanner(System.in);

System.out.println("Seconds: ");

int secs = s.nextInt();

GregorianCalendar cal = new GregorianCalendar(0,0,0,0,0,secs);

Date dNow = cal.getTime();

SimpleDateFormat ft = new SimpleDateFormat("HH 'hours' mm 'minutes' ss 'seconds'");

System.out.println("Your time: " + ft.format(dNow));

Connor Cowling answered 2019-04-10T11:41:11Z

1 votes

我用这个:

public String SEG2HOR( long lnValue) { //OK

String lcStr = "00:00:00";

String lcSign = (lnValue>=0 ? " " : "-");

lnValue = lnValue * (lnValue>=0 ? 1 : -1);

if (lnValue>0) {

long lnHor = (lnValue/3600);

long lnHor1 = (lnValue % 3600);

long lnMin = (lnHor1/60);

long lnSec = (lnHor1 % 60);

lcStr = lcSign + ( lnHor < 10 ? "0": "") + String.valueOf(lnHor) +":"+

( lnMin < 10 ? "0": "") + String.valueOf(lnMin) +":"+

( lnSec < 10 ? "0": "") + String.valueOf(lnSec) ;

}

return lcStr;

}

cesin answered 2019-04-10T11:41:31Z

1 votes

我知道这很老了但是在java 8中:

LocalTime.MIN.plusSeconds(120).format(DateTimeFormatter.ISO_LOCAL_TIME)

Causteau answered 2019-04-10T11:41:57Z

1 votes

只需几分钟和几秒就可以使用它

String.format("%02d:%02d", (seconds / 3600 * 60 + ((seconds % 3600) / 60)), (seconds % 60))

Asthme answered 2019-04-10T11:42:23Z

0 votes

如果您需要持续时间h,min和sec,您可以使用:

String convertSeconds(int seconds)

int h = seconds/ 3600;

int m = (seconds % 3600) / 60;

int s = seconds % 60;

String sh = (h > 0 ? String.valueOf(h) + " " + "h" : "");

String sm = (m < 10 && m > 0 && h > 0 ? "0" : "") + (m > 0 ? (h > 0 && s == 0 ? String.valueOf(m) : String.valueOf(m) + " " + "min") : "");

String ss = (s == 0 && (h > 0 || m > 0) ? "" : (s < 10 && (h > 0 || m > 0) ? "0" : "") + String.valueOf(s) + " " + "sec");

return sh + (h > 0 ? " " : "") + sm + (m > 0 ? " " : "") + ss;

}

int seconds = 3661;

String duration = convertSeconds(seconds);

这是很多条件运算符。 该方法将返回这些字符串:

0 -> 0 sec

5 -> 5 sec

60 -> 1 min

65 -> 1 min 05 sec

3600 -> 1 h

3601 -> 1 h 01 sec

3660 -> 1 h 01

3661 -> 1 h 01 min 01 sec

108000 -> 30 h

Nicolas answered 2019-04-10T11:43:05Z

0 votes

我在python中使用它将表示秒的浮点数转换为小时,分钟,秒和微秒。 它相当优雅,通过strptime转换为日期时间类型很方便。 如果需要,它也可以很容易地扩展到更长的间隔(数周,数月等)。

def sectohmsus(seconds):

x = seconds

hmsus = []

for i in [3600, 60, 1]: # seconds in a hour, minute, and second

hmsus.append(int(x / i))

x %= i

hmsus.append(int(round(x * 1000000))) # microseconds

return hmsus # hours, minutes, seconds, microsecond

rtphokie answered 2019-04-10T11:43:43Z

0 votes

我已经尝试过最好的方法和更少的代码,但可能有点难以理解我是如何编写代码但如果你擅长数学就很容易

import java.util.Scanner;

上课时间{

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

double s;

System.out.println("how many second you have ");

s =input.nextInt();

double h=s/3600;

int h2=(int)h;

double h_h2=h-h2;

double m=h_h2*60;

int m1=(int)m;

double m_m1=m-m1;

double m_m1s=m_m1*60;

System.out.println(h2+" hours:"+m1+" Minutes:"+Math.round(m_m1s)+" seconds");

}

}

超过它是准确的!

Abdihakiim yusuf Adan answered 2019-04-10T11:44:40Z

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29062671/article/details/114116031

智能推荐

修改表字段相关的sql_修改表字段名称sql-程序员宅基地

文章浏览阅读975次。修改表字段相关的sql_修改表字段名称sql

高级安卓开发面试题,史上最全的Android开发索引帖,Android开发两年-程序员宅基地

文章浏览阅读939次,点赞25次,收藏27次。由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

linux 使用 navicat 报错的各种问题_linux 安装navicat 提示报错-程序员宅基地

文章浏览阅读1.1k次。我是凝思系统,使用的一些系统库可能比较旧吧,容易报错,记录一下解决过程查阅资料是 glib 版本的问题[Solved]navicat report error after update system / Applications & Desktop Environments / Arch Linux Forums我用的是 glib 的 2.68.4 分支,旧的版本有些符号有问题https://github.com/GNOME/glib/tree/2.68.4参照 1_04_GLib库入门与实践_GLi_linux 安装navicat 提示报错

【Unity3D游戏开发实战】Unity3D实现休闲类游戏《2048》——算法、源代码_unity小游戏2048源码-程序员宅基地

文章浏览阅读1w次,点赞29次,收藏133次。推荐阅读CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。一、前言最近有粉丝要参加游戏创作大赛,问我需要准备学习什么知识,以及参加比赛的注意事项:参加这类比赛是非常有好处的,不仅提高了技术,也增长了见识。因为是兴趣驱动学习,在完善自己心爱游戏的过程中,要不断的去学习,不断的提高自己。更能在这个过程中找到志同道合的好朋友。那今天就._unity小游戏2048源码

【python】Open3D,Write PLY failed解决方法_write pcd failed: unable to generate header.-程序员宅基地

文章浏览阅读6.5k次。写了一个简单的函数,将三维点云(ndarray)保存为.ply文件:def save_points_as_ply(points, ply_path): """ 将点云保存为.ply文件,保存成功会打印'ply_path 已保存' :param points: ndarray, (-1,3) :param ply_path: str,'xxx/xxxx.ply' """ pcd = o3d.geometry.PointCloud() pcd.point_write pcd failed: unable to generate header.

详解 Android Views 元素的 layout_weight 属性-程序员宅基地

文章浏览阅读75次。所有View(视图)元素中都有一个XML属性android:layout_weight,其值为0,1,2,3...等整数值。使用了之后,其对应界面中的元素比例就会发生变化,变大或者变小。layout_weight属性其实就是一个元素重要度的属性,用于在线性布局中为不同的view元素设置不同的重要度。  所有的视图都有一个layout_weight值,其默认值为0,表示视图多大就占据..._android view获取当前的layout_with 的值

随便推点

详解:hive启动hiveserver2连JDBC报错:Could not open client transport with JDBC Uri 解决方案_could not open client transport with jdbc uri: jdb-程序员宅基地

文章浏览阅读4.4k次。hive启动hiveserver2连JDBC报错:Could not open client transport with JDBC Uri 解决方案 [hadoop@hadoop001 bin]$ ./beeline -u jdbc:hive2://hadoop001:10000/default -n hadoopls: cannot access /home/hadoop/app/spar..._could not open client transport with jdbc uri: jdbc:hive2://localhost:10000/

Sublime Text 3中文乱码问题的解决(最有效)_sublime text 显示乱码-程序员宅基地

文章浏览阅读2.2w次,点赞5次,收藏13次。 Sublime Text 3中文乱码问题的解决(最有效) Sublime Text 3是很好的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文的话,就会乱码,如下所示: 解决步骤如下: 大家如果是在官网下载的Sublime Text 3,那么首先需要安装一个 Pack..._sublime text 显示乱码

机器学习概述-程序员宅基地

文章浏览阅读5.2k次,点赞6次,收藏80次。机器学习是一种人工智能技术,通过对数据的学习和分析,让计算机系统自动提高其性能。简而言之,机器学习是一种从数据中学习规律和模式的方法,通过数据来预测、分类或者决策。_机器学习

操作系统安全---实验三:Windows7操作系统安全_操作系统的基本安全设置实验总结-程序员宅基地

文章浏览阅读3.8k次,点赞3次,收藏39次。目录一、实验目的及要求二、实验原理三、实验环境四、实验步骤及内容4.1账户与口令4.2审核与日志4.3安全模板五、实验总结六、分析与思考一、实验目的及要求了解Windows账户与密码的安全策略设置,掌握用户和用户组的权限管理、审核,以及日志的启用,并学会使用安全模版来分析配置计算机。二、实验原理Windows系列是目前世界上使用用户最多的桌面操作系统。由于历史原因,Windows的很多用户都直接以管理员权限运行系统,对计算机安全构成很大隐患。从Wi..._操作系统的基本安全设置实验总结

Python + Selenium自动化测试 -- 自定义Log类_selenium python 创建log类-程序员宅基地

文章浏览阅读3.2k次,点赞2次,收藏15次。本文用日志来记录我们测试脚本做的事情,其实最好的办法是写事件监听(对于小白的我,暂时不会,先从日志学起)。 下面写一个日之类,用来输出不同级别的日志信息到本地文件夹下的日志文件里。 目标输出效果: 解决思路: 1. 封装Log类,类名为Logger; 2. 在Logger类中创建记录器logger; 3. 创建一个handler,用于写入日志文件,写到磁盘;再创建一个handler,_selenium python 创建log类

canal 整合 springboot_canalboot-程序员宅基地

文章浏览阅读632次。mysql 开启bin_logvi /etc/my.cnf末尾增加如下配置log_bin=mysql-bin binlog-format=ROW #选择row模式server-id = 1expire_logs_days=5 #日志过期时间为5天 重启mysql [5.7]service mysqld restart 修改canal 配置vi canal/conf/canal.properties#唯一标识 新增canal.id =123 _canalboot