我糊涂了。 绊倒这个线程后,我试图找出如何格式化具有hh:mm:ss格式的倒数计时器。

这是我的尝试-

//hh:mm:ss

String.format("%02d:%02d:%02d",

TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) -

TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

TimeUnit.MILLISECONDS.toSeconds(millis) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

因此,当我尝试3600000ms之类的值时,我得到01:59:00,这是错误的,因为它应该是01:00:00。 显然我的逻辑有问题,但是目前,我看不出它是什么!

有人可以帮忙吗?

编辑-

固定它。 这是将毫秒格式设置为hh:mm:ss格式的正确方法-

//hh:mm:ss

String.format("%02d:%02d:%02d",

TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) -

TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

TimeUnit.MILLISECONDS.toSeconds(millis) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));

问题是此TimeUnit.MINUTES.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))。 应该是这个TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))。

3,600,000毫秒是3,600秒或60分钟或1小时。 它不应该是00:59:59,应该是01:00:00。

你真的很亲密:

String.format("%02d:%02d:%02d",

TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) -

TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), // The change is in this line

TimeUnit.MILLISECONDS.toSeconds(millis) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

您使用分钟而不是小时将小时转换为毫秒。

顺便说一句,我喜欢您使用TimeUnit API :)

这是一些测试代码:

public static void main(String[] args) throws ParseException {

long millis = 3600000;

String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

System.out.println(hms);

}

输出:

01:00:00

我意识到上面的代码可以通过使用模数除法而不是减法来大大简化:

String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) % TimeUnit.HOURS.toMinutes(1),

TimeUnit.MILLISECONDS.toSeconds(millis) % TimeUnit.MINUTES.toSeconds(1));

仍对所有魔术值使用TimeUnit API,并提供完全相同的输出。

阿们,就像您使用TimeUnit API的方式一样:)

重新发明轮子不是一个好主意!特里顿·芒斯的答案是更好的解决方案。

@ ???????????但是另一个答案是使用外部库,而我的代码仅使用核心JDK。这取决于您的需求-例如,您可能无法使用外部库。另一个答案是好的。

超过365天时如何回合?你能做相当于几年的时间吗?谢谢。

@KarenAnne是什么意思?你能给我示例输入和输出吗?

@ ???????????我需要在字符串中添加Days和其他文本。在这个答案中,很容易我在%02d和finish之间插入了文本,那么用您建议的答案比这个更好呢?

给定时间(以毫秒为单位),例如时间不超过一个小时,则返回例如" 00:15:23"。有什么方法可以使它在为空时删除零?例如,返回" 15:23"而不是" 00:15:23"。

@Ozuf添加.replaceAll("^00:","")或.replaceAll("^00:(00:)?","")以删除分钟和小时(如果两者均为零)。

谢谢,但是如果时间是" 00:15:00"或" 10:00:23"会怎样?

@Ozuf分别得到"15:00"和"10:00:23";由于^将匹配锚定为输入的开始,因此仅删除了前导零。

谢谢一百万:D。请您更新答案,以便其他人可以轻松看到它吗?

int hrs =(int)TimeUnit.MILLISECONDS.toHours(miliSeconds)%24; int min =(int)TimeUnit.MILLISECONDS.toMinutes(miliSeconds)%60; int sec =(int)TimeUnit.MILLISECONDS.toSeconds(miliSeconds)%60;返回String.format("%02d:%02d:%02d",小时,分钟,秒);

节省了很多时间。谢谢。

通用方法非常简单:

public static String convertSecondsToHMmSs(long seconds) {

long s = seconds % 60;

long m = (seconds / 60) % 60;

long h = (seconds / (60 * 60)) % 24;

return String.format("%d:%02d:%02d", h,m,s);

}

字符串是String.format("%d:%02d:%02d", h,m,s)。

@ Javaman59,您是说String.format("% 02 d:%02d:%02d", h,m,s)吗?

@KarenAnne。这取决于您是否要使用例如" 03:59:59"或" 3:59:59"。

时间(以毫秒为单位),您需要将秒数乘以1000

作者问的是毫秒,而不是秒!

如果您使用的是Apache Commons:

DurationFormatUtils.formatDuration(timeInMS,"HH:mm:ss,SSS");

快捷方式:DurationFormatUtils.formatDurationHMS(timeInMS);

@Jorgesys为什么它们已过时?

他们没有过时。

// New date object from millis

Date date = new Date(millis);

// formattter

SimpleDateFormat formatter= new SimpleDateFormat("HH:mm:ss.SSS");

formatter.setTimeZone(TimeZone.getTimeZone("UTC"));

// Pass date object

String formatted = formatter.format(date );

请参见使用1200 ms输入的可运行示例。

超过一天的时间将产生错误的结果。它将把小时数从23换回0,这在这里可能是不希望的。

没有朋友...我认为它仍然可以正常工作。尝试今天的日期

SimpleDateFormat sdf = new SimpleDateFormat(" hh:mm aa");如果有人想要12小时制的上午/下午

我用这个:

String.format("%1$tH:%1$tM:%1$tS.%1$tL", millis);

请参阅类格式化程序的描述。

请参见使用2400 ms输入的可运行示例。

似乎不起作用,我只是通过100、1000、1200进行了测试,它的响应时间是05:30:00,05:30:01、05:30:01。

@CoDe,它适用于您的时区。您所处的时区必须与UTC不同。 String.format()与时区有关。但是,理想的正确答案应该与时区无关。

@CoDe,它显示的时间与您的时区相对应,必须与UTC不同。 String.format()与时区有关。但是,理想的正确答案应该与时区无关。

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

String formatted = df.format(aDateObject);

答案与stackoverflow.com/questions/9027317/相同,持续时间超过1天的问题相同

它也取决于时区,这意味着在不同时区运行时结果将有所不同。

4种实现的测试结果

必须对海量数据进行大量格式化,需要最佳性能,因此(令人惊讶的)结果如下:

对于(int i = 0; i <1000000; i ++){

FUNCTION_CALL

}

持续时间:

组合格式:196毫秒

格式持续时间:272毫秒

apache格式:754毫秒

formatTimeUnit:2216毫秒

public static String apacheFormat(long millis) throws ParseException {

return DurationFormatUtils.formatDuration(millis,"HH:mm:ss");

}

public static String formatTimeUnit(long millis) throws ParseException {

String formatted = String.format(

"%02d:%02d:%02d",

TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis)

- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

TimeUnit.MILLISECONDS.toSeconds(millis)

- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

return formatted;

}

public static String formatDuration(final long millis) {

long seconds = (millis / 1000) % 60;

long minutes = (millis / (1000 * 60)) % 60;

long hours = millis / (1000 * 60 * 60);

StringBuilder b = new StringBuilder();

b.append(hours == 0 ?"00" : hours < 10 ? String.valueOf("0" + hours) :

String.valueOf(hours));

b.append(":");

b.append(minutes == 0 ?"00" : minutes < 10 ? String.valueOf("0" + minutes) :

String.valueOf(minutes));

b.append(":");

b.append(seconds == 0 ?"00" : seconds < 10 ? String.valueOf("0" + seconds) :

String.valueOf(seconds));

return b.toString();

}

public static String combinationFormatter(final long millis) {

long seconds = TimeUnit.MILLISECONDS.toSeconds(millis)

- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis));

long minutes = TimeUnit.MILLISECONDS.toMinutes(millis)

- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis));

long hours = TimeUnit.MILLISECONDS.toHours(millis);

StringBuilder b = new StringBuilder();

b.append(hours == 0 ?"00" : hours < 10 ? String.valueOf("0" + hours) :

String.valueOf(hours));

b.append(":");

b.append(minutes == 0 ?"00" : minutes < 10 ? String.valueOf("0" + minutes) :

String.valueOf(minutes));

b.append(":");

b.append(seconds == 0 ?"00" : seconds < 10 ? String.valueOf("0" + seconds) :

String.valueOf(seconds));

return b.toString();

}

这些指标的可靠性如何?我从来没有真正了解过这个过程。

在连续创建数千个对象的情况下,我认为此测试非常有用。可以不仅设置一些字符串,还可以创建具有一个字段的格式化字符串的对象。

@marius麻烦您使用StringBuilder,然后犯了使用" 0" +数字类型的"废墟"的错误。 @mre JVMs GC非常擅长分配和收集大量的短期对象,而无需担心。我使用String.format没有前导零逻辑来处理。

按照波西米亚的答案,我们不需要使用TimeUnit来查找已知值。

更好的代码将是

String hms = String.format("%02d:%02d:%02d", millisLeft/(3600*1000),

millisLeft/(60*1000) % 60,

millisLeft/1000 % 60);

希望能帮助到你

最喜欢您的答案! 只是简单的数学。 顺便说一句,在我的情况下,我将毫秒数添加到了millisLeft%100010的末尾,因此我们得到的格式为hour:minutes:seconds:milliseconds

public String millsToDateFormat(long mills) {

Date date = new Date(mills);

DateFormat formatter = new SimpleDateFormat("HH:mm:ss");

String dateFormatted = formatter.format(date);

return dateFormatted; //note that it will give you the time in GMT+0

}

答案取决于时区,这意味着在不同时区运行时结果会有所不同。

下面的代码以两种方式进行转换

23:59:58:999至86398999

然后

86398999至23:59:58:999

import java.util.concurrent.TimeUnit;

public class TimeUtility {

public static void main(String[] args) {

long currentDateTime = System.currentTimeMillis();

String strTest ="23:59:58:999";

System.out.println(strTest);

long l = strToMilli(strTest);

System.out.println(l);

l += 1;

String str = milliToString(l);

System.out.println(str);

}

/**

* convert a time string into the equivalent long milliseconds

*

* @param strTime string fomratted as HH:MM:SS:MSMS i.e."23:59:59:999"

* @return long integer like 86399999

*/

public static long strToMilli(String strTime) {

long retVal = 0;

String hour = strTime.substring(0, 2);

String min = strTime.substring(3, 5);

String sec = strTime.substring(6, 8);

String milli = strTime.substring(9, 12);

int h = Integer.parseInt(hour);

int m = Integer.parseInt(min);

int s = Integer.parseInt(sec);

int ms = Integer.parseInt(milli);

String strDebug = String.format("%02d:%02d:%02d:%03d", h, m, s, ms);

//System.out.println(strDebug);

long lH = h * 60 * 60 * 1000;

long lM = m * 60 * 1000;

long lS = s * 1000;

retVal = lH + lM + lS + ms;

return retVal;

}

/**

* convert time in milliseconds to the corresponding string, in case of day

* rollover start from scratch 23:59:59:999 + 1 = 00:00:00:000

*

* @param millis the number of milliseconds corresponding to tim i.e.

*               34137999 that can be obtained as follows;

*

*               long lH = h * 60 * 60 * 1000; //hour to milli

*

*               long lM = m * 60 * 1000; // minute to milli

*

*               long lS = s * 1000; //seconds to milli

*

*               millis = lH + lM + lS + ms;

* @return a string formatted as HH:MM:SS:MSMS i.e."23:59:59:999"

*/

private static String milliToString(long millis) {

long hrs = TimeUnit.MILLISECONDS.toHours(millis) % 24;

long min = TimeUnit.MILLISECONDS.toMinutes(millis) % 60;

long sec = TimeUnit.MILLISECONDS.toSeconds(millis) % 60;

//millis = millis - (hrs * 60 * 60 * 1000); //alternative way

//millis = millis - (min * 60 * 1000);

//millis = millis - (sec * 1000);

//long mls = millis ;

long mls = millis % 1000;

String toRet = String.format("%02d:%02d:%02d:%03d", hrs, min, sec, mls);

//System.out.println(toRet);

return toRet;

}

}

我赞成这个解决方案。只需在秒和毫升之间插入一个点。而且我不知道为什么在Java中很难处理时间和日期。最常用的功能应该已经可用,并且是该类的一部分。

String string = String.format("%02d:%02d:%02d.%03d",

TimeUnit.MILLISECONDS.toHours(millisecend), TimeUnit.MILLISECONDS.toMinutes(millisecend) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisecend)),

TimeUnit.MILLISECONDS.toSeconds(millisecend) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisecend)), millisecend - TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millisecend)));

格式:00:00:00.000

示例:615605 Millisecend

00:10:15.605

标记为正确的答案有一点错误,

String myTime = String.format("%02d:%02d:%02d",

TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) -

TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), // The change is in this line

TimeUnit.MILLISECONDS.toSeconds(millis) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

例如,这是我得到的价值的一个例子:

417474:44:19

这是获得正确格式的解决方案:

String myTime =  String.format("%02d:%02d:%02d",

//Hours

TimeUnit.MILLISECONDS.toHours(millis) -

TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(millis)),

//Minutes

TimeUnit.MILLISECONDS.toMinutes(millis) -

TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

//Seconds

TimeUnit.MILLISECONDS.toSeconds(millis) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

结果得到正确的格式:

18:44:19

获取格式hh:mm:ss的其他选项就是:

Date myDate = new Date(timeinMillis);

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

String myTime = formatter.format(myDate);

这与Kotlin一起为我工作

fun formatToDigitalClock(miliSeconds: Long): String {

val hours = TimeUnit.MILLISECONDS.toHours(miliSeconds).toInt() % 24

val minutes = TimeUnit.MILLISECONDS.toMinutes(miliSeconds).toInt() % 60

val seconds = TimeUnit.MILLISECONDS.toSeconds(miliSeconds).toInt() % 60

return when {

hours > 0 -> String.format("%d:%02d:%02d", hours, minutes, seconds)

minutes > 0 -> String.format("%02d:%02d", minutes, seconds)

seconds > 0 -> String.format("00:%02d", seconds)

else -> {

"00:00"

}

}

}

为我完美地工作。 这应该是最好的答案,因为它可以处理零小时

我尝试了如第一个答案所示。它有效,但是减号使我感到困惑。我对Groovy的回答:

import static java.util.concurrent.TimeUnit.*

...

private static String formatElapsedTime(long millis) {

int hrs = MILLISECONDS.toHours(millis) % 24

int min = MILLISECONDS.toMinutes(millis) % 60

int sec = MILLISECONDS.toSeconds(millis) % 60

int mls = millis % 1000

sprintf( '%02d:%02d:%02d (%03d)', [hrs, min, sec, mls])

}

Java 9

Duration timeLeft = Duration.ofMillis(3600000);

String hhmmss = String.format("%02d:%02d:%02d",

timeLeft.toHours(), timeLeft.toMinutesPart(), timeLeft.toSecondsPart());

System.out.println(hhmmss);

打印:

01:00:00

您让库方法为您完成涉及的转换是对的。 java.time,现代的Java日期和时间API,或更准确地说,它的Duration类比TimeUnit更优雅,更不容易出错。

我使用的toMinutesPart和toSecondsPart方法是在Java 9中引入的。

Java 6、7和8

long hours = timeLeft.toHours();

timeLeft = timeLeft.minusHours(hours);

long minutes = timeLeft.toMinutes();

timeLeft = timeLeft.minusMinutes(minutes);

long seconds = timeLeft.toSeconds();

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

System.out.println(hhmmss);

输出与上面相同。

问题:在Java 6和7中如何工作?

在Java 8和更高版本以及更新的Android设备上(告诉我来自API级别26),java.time是内置的。

在Java 6和7中,获取ThreeTen Backport,这是现代类的backport(JSR 310的ThreeTen;请参见底部的链接)。

在较旧的Android上,请使用Android版本的ThreeTen Backport。叫做ThreeTenABP。并确保使用子包从org.threeten.bp导入日期和时间类。

链接

Oracle教程:日期时间,说明如何使用java.time。

Java Specification Request(JSR)310,其中首先描述了java.time。

ThreeTen Backport项目,java.time到Java 6和7的反向端口(JSR-310的ThreeTen)。

ThreeTenABP,ThreeTen Backport的Android版

问题:如何在Android Project中使用ThreeTenABP,并有非常详尽的说明。

对于科特林

val hours = String.format("%02d", TimeUnit.MILLISECONDS.toHours(milSecs))

val minutes = String.format("%02d",

TimeUnit.MILLISECONDS.toMinutes(milSecs) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(milSecs)))

val seconds = String.format("%02d",

TimeUnit.MILLISECONDS.toSeconds(milSecs) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(milSecs)))

其中,milSecs是毫秒

好吧,您可以尝试这样的事情:

public String getElapsedTimeHoursMinutesSecondsString() {

long elapsedTime = getElapsedTime();

String format = String.format("%%0%dd", 2);

elapsedTime = elapsedTime / 1000;

String seconds = String.format(format, elapsedTime % 60);

String minutes = String.format(format, (elapsedTime % 3600) / 60);

String hours = String.format(format, elapsedTime / 3600);

String time =  hours +":" + minutes +":" + seconds;

return time;

}

将毫秒转换为时间值

java怎么把毫秒转换成天数_关于java:如何将毫秒转换为“ hh:mm:ss”格式?相关推荐

  1. 时间戳转换成YY-MM-DD HH:MM:SS格式

    时间戳转换成YY-MM-DD HH:MM:SS格式 formatDate (timeStamp) {// console.log('时间戳',timeStamp)timeStamp=`${timeSt ...

  2. 格式化时间 将2021-09-05T09:08:03.000Z 转换成 YYYY-MM-DD HH:mm:ss 格式

    格式化时间 将2021-09-05T09:08:03.000Z 转换成 YYYY-MM-DD HH:mm:ss 格式 1.引入第三方包 dayjs (一个轻量的处理时间和日期的javascript库) ...

  3. java 获取当前时间并转化为yyyy-MM-dd HH:mm:ss格式(性程安全模式与不安全)

    https://blog.csdn.net/weixin_39973810/article/details/82012329方法一(线程不安全, 不建议使用)private SimpleDateFor ...

  4. java怎么把毫秒转换成天数_Java 毫秒转换为日期类型、日期转换为毫秒

    //毫秒转换为日期 public static void main(String[] args) { DateFormat formatter = new SimpleDateFormat(" ...

  5. jquery 毫秒转换成日期_基于jQuery的时间戳与日期间的转化

    本文实例为大家分享了jQuery时间戳与日期间的转化代码,供大家参考,具体内容如下 背景: 需求如图: 直接上代码,所有的内容都在注释里: /** * 格式化时间:补0操作 * */ function ...

  6. 在vue中将2022-07-05T09:57:39.000Z 转换成 YYYY-MM-DD HH:mm:ss 格式

    1.问题描述 今天联系项目的时候遇到一个时间格式的问题,在数据库的时候时间格式是正常的,但是前端页面拿的数据渲染表格的时候就显示不是我想要的格式了,这就需要对时间格式进行处理了 下面两张图就是数据库和 ...

  7. java 获取当前hhmm_java 获取当前时间并转化为yyyy-MM-dd HH:mm:ss格式

    https://blog.csdn.net/weixin_39973810/article/details/82012329 方法一(线程不安全, 不建议使用) private SimpleDateF ...

  8. 电子表格转换成数据库_创建数据库,将电子表格转换为关系数据库,第1部分...

    电子表格转换成数据库 Part 1: Creating an Entity Relational Diagram (ERD) 第1部分:创建实体关系图(ERD) A Relational Databa ...

  9. python将音频转换成文字_用Python将音频内容转换为文本格式,方言可以吗?

    当对一个或多个人的谈话进行记录时,采用一种高度准确和自动化的方式将口语提取为文本非常有用.转换成文字后,便可以将其用于进一步分析或用作其他功能. 在本教程中,我们将使用称为AssemblyAI(htt ...

最新文章

  1. 什么是野指针和内存泄露?如何避免野指针
  2. 很好的 .NET 换肤软件 IrisSkin
  3. tensorflow计算网络占用内存_详细图解神经网络梯度下降法(tensorflow计算梯度)...
  4. 消息已读未读的模型设计_阿里云技术专家分享:现代 IM 系统中消息推送和存储架构的实现...
  5. 【jquery Ajax 练习】图书管理
  6. 隐马尔科夫模型(HMM)模型训练:Baum-Welch算法
  7. Java练习、每日一题、共100题
  8. Redis Guava 布隆过滤器实现和准确率测试
  9. 【公式编辑测试】解析几何-三角形外心重心垂心内心公式
  10. 君子生非异也,善假于物也。【借助外力获取能量,主动改善生存环境。】
  11. selenium用jquery改变元素属性
  12. 安徽大学计算机保研学校,她手握6所名校offer,19岁从安徽大学保研到北大,网友却说她亏了...
  13. 三种查看MySQL数据库版本的方法
  14. Splunk机器学习应用(Machine Learning Toolkit)
  15. jquery学习2_jquery知识预览
  16. mysql drop后回收站怎么恢复_回收站清空了怎么恢复
  17. 如何快速给pdf加水印?
  18. windows show failed无法启动你的相机
  19. 一个小软件公司的催款书
  20. Bugfree 客户端使用手册

热门文章

  1. 16进制在c语言中用来做什么,十六进制在代码中有什么用
  2. html标签的pre语义,HTML pre 标签
  3. html css图片展开动画,8个实用炫酷的HTML5图片动画应用
  4. flutter 刷脸_支付宝刷脸认证 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. 2021庐江高考成绩查询,2021庐江高考考点查询入口https://lj.hfzsks.org/list_score/index.php?seach_t...
  6. Laravel短信mysql_使用 Laravel 实现阿里云短信服务队列
  7. Ubuntu 16.04 安装Go 1.9.2
  8. java开发C语言编译器
  9. 161011、oracle批量插入数据
  10. GitHub中watch star fork三个按钮干什么用的?