当前位置: 首页 > 面试题库 >

SimpleDateFormat显示错误的分钟,秒和毫秒

吕宇定
2023-03-14
问题内容

我已经编写了此示例程序,其中我想将日期转换为另一种格式。使用简单的日期格式时,我没有看到预期的日期。

 public class TestDate {

    /**
     * @param args
     */
    public static void main(String[] args) {
        SimpleDateFormat originalformat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS");
        SimpleDateFormat targetformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
        try {

            //Use Simple Date Format
            Date date = originalformat.parse("2015-04-09-17.18.48.677862");
            System.out.println("Using SDF "+targetformat.format(date));

            //Use Manual Translation
            String eventTime = "2015-04-09-17.18.48.677862";
            StringBuffer timeBuffer = new StringBuffer();
            for (int i = 0; i < eventTime.length(); i++) {
                if (i == 10) {
                    timeBuffer.append(" ");
                    continue;
                } else if (i == 13 || i == 16) {
                    timeBuffer.append(":");
                    continue;
                } else {
                    timeBuffer.append(eventTime.charAt(i));
                }
            }
            timeBuffer.append("000");
            String transformedTime = timeBuffer.toString().trim();
            System.out.println("Manual Translation "+transformedTime);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

我看到以下输出。第一种是使用简单的日期格式,第二种是手动翻译。

Using SDF 2015-04-09 17:30:05.000862
Manual Translation 2015-04-09 17:18:48.677862000

因此,如何使简单的日期格式输出与手动格式类似的值


问题答案:

看来您不能使用6位数字表示毫秒。您的程序关闭了11分17秒。660秒=
11分钟,您可以休息17秒。因此,它只能将您输入的内容从秒转换为分钟,因为它不能接受超过3毫秒的数字。



 类似资料:
  • 问题内容: 我正在编写一个赛车应用程序,想要将大量毫秒转换为minutes:seconds.milliseconds(例如)。目前,我只是通过数学()进行运算,然后求余数并进一步除法,依此类推,但是我发现它时不时关闭1毫秒。我知道这听起来似乎没什么大不了的,但是我试图找到和的平均值,然后返回,这意味着它输入不正确,而应用程序的其余部分无法处理。 有没有一种方法使用或格式化毫秒到MM或类似的东西:s

  • 问题内容: 谁能告诉我这段代码有什么问题: 输出是: 当输入时间以毫秒为单位时,请注意以分钟为单位的差异。 问题答案: 对于,毫秒格式的值包含大写字符,而不是秒的小写字符。 秒(秒)55 毫秒数978 它解释为秒,并将这些秒(847秒是13分钟47秒)添加到您的值中。 使用毫秒。 顺便说一句,如果相同,则无需多次创建。您可以创建一次,将其保存到变量中,然后多次调用,对于您要解析的每个日期/时间字符

  • 问题内容: 这就是我目前所拥有的 我觉得是对的。数小时和数天应该是- 然后- 但是我的时间和日子是不正确的 问题答案: 一种简单的计算时间的方法是使用类似 如果您的天数超过28天,则可以使用此功能,但是如果您的时间为负数,则无法使用。

  • 问题内容: 我在Microsoft SQL Server 2008R2中有一个bigint字段,其中充满了刻度线(单个刻度线代表一百纳秒或一千万分之一秒。在一毫秒内有10,000个刻度。) http://msdn.microsoft.com/zh- CN/library/system.datetime.ticks.aspx 我需要将所有记录的总和转换为Days:Hours:Minutes:Seco

  • 这个问题我已经研究了一段时间,但我只能得到秒数,下面是给我的说明:编写一个程序,从代表纳秒数的标准输入中读取一个非负整数。然后,程序编写一行输出,给出等效的天、小时、分钟、秒、毫秒、微秒和纳秒的数量。例如,输入为123456789123456789。则输出为:123456789123456789纳秒等于1428天、21小时、33分钟、9秒、123毫秒、456微秒和789纳秒。这是我写的: }

  • 运行时错误: 线程"main"java.time.format.DateTimeParseException中的异常:无法在索引20解析文本'1999-09-09 09:09:09.999' 如何解决我的案子?