Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中打印时间段的库,只提供最重要的字段_Java_Date_Grails_Groovy - Fatal编程技术网

在Java中打印时间段的库,只提供最重要的字段

在Java中打印时间段的库,只提供最重要的字段,java,date,grails,groovy,Java,Date,Grails,Groovy,我想将时间段格式化为英语和其他语言 然而,我想要一种简单的方法,只列出最重要的一两个字段,例如“2年零3个月”或“5天”,而不必编写代码来处理这个问题。Joda Time的问题是,除非您编写代码,否则它会给您类似“2年3个月零5天”的输出 有些图书馆做的正是我想要的,但只是为了和现在比较,比如“3个月前”。我只想要“3个月” 当然,一定有一个库的行为像美丽的时间,但为通用的持续时间 我专门使用Grails/Groovy,但普通Java解决方案同样可以接受。为什么不能使用Joda Time编写一点

我想将时间段格式化为英语和其他语言

然而,我想要一种简单的方法,只列出最重要的一两个字段,例如“2年零3个月”或“5天”,而不必编写代码来处理这个问题。Joda Time的问题是,除非您编写代码,否则它会给您类似“2年3个月零5天”的输出

有些图书馆做的正是我想要的,但只是为了和现在比较,比如“3个月前”。我只想要“3个月”

当然,一定有一个库的行为像美丽的时间,但为通用的持续时间


我专门使用Grails/Groovy,但普通Java解决方案同样可以接受。

为什么不能使用Joda Time编写一点代码?我遇到了一个与您类似的问题,我用如下实用方法解决了它:

也许这不是你想要的,但我希望它能帮助你


问候。

为什么不能使用Joda Time编写一点代码?我遇到了一个与您类似的问题,我用如下实用方法解决了它:

也许这不是你想要的,但我希望它能帮助你


注意。

有时当您有特定需求时,您必须编写一些代码。你应该能够复制一些几乎是你想要的东西并加以扩展。您甚至可以将更改作为补丁提供,以便其他人可以利用您的改进。@PeterLawrey您所说的“特定”是什么意思?你是说对我来说是独一无二的?那么你是完全正确的;然而,我就是不相信这种必要性是我特有的??!!在这种情况下,提供您对开源项目所做的任何改进将非常有用,以便其他人可以利用它们。我没有使用PrettyTime(尽管我真的很想),但在它的功能下,它表示生成人类可读的时间戳,如“现在”、“2天前”或“3个月后”wvh回避了这样一个事实,即它也可以执行“日期”操作。有时,当您有特定的需求时,您必须编写一些代码。你应该能够复制一些几乎是你想要的东西并加以扩展。您甚至可以将更改作为补丁提供,以便其他人可以利用您的改进。@PeterLawrey您所说的“特定”是什么意思?你是说对我来说是独一无二的?那么你是完全正确的;然而,我就是不相信这种必要性是我特有的??!!在这种情况下,提供您对开源项目所做的任何改进将非常有用,以便其他人可以利用它们。我没有使用PrettyTime(尽管我真的很想),但在它的功能下,它表示生成人类可读的时间戳,如“现在”、“2天前”或“3个月后”wvh回避了这样一个事实,即它也可以执行“日期”操作—您没有编写上面的任何代码。看来您也不想添加任何代码?@PeterLawrey理想情况下不想:-)。在任何情况下,上面的代码实际上都不能满足要求,因此我不得不编写它。例如,只有在没有月/年的情况下才应添加天。@Fletch因此,如果您有50天,它将显示为
1 m,480 h
?@PeterLawrey它将显示为您在StackOverflow上提问的日期,但没有“ago”。因此,在您的示例中,它将显示为“2个月”(由于四舍五入)。我理解您希望避免编写代码,如果可能的话,我也尝试避免编写代码,因为我认为最可维护的代码是您不编写的代码,所以我尝试尽可能利用现有库。然而,根据我的经验,我的建议是,有时候你所寻找的东西并不存在,不值得花更多的时间去寻找那些不存在的东西。这取决于你是否一直试图找到一个现成的解决方案或写一点:)你没有写上面的任何代码。看来您也不想添加任何代码?@PeterLawrey理想情况下不想:-)。在任何情况下,上面的代码实际上都不能满足要求,因此我不得不编写它。例如,只有在没有月/年的情况下才应添加天。@Fletch因此,如果您有50天,它将显示为
1 m,480 h
?@PeterLawrey它将显示为您在StackOverflow上提问的日期,但没有“ago”。因此,在您的示例中,它将显示为“2个月”(由于四舍五入)。我理解您希望避免编写代码,如果可能的话,我也尝试避免编写代码,因为我认为最可维护的代码是您不编写的代码,所以我尝试尽可能利用现有库。然而,根据我的经验,我的建议是,有时候你所寻找的东西并不存在,不值得花更多的时间去寻找那些不存在的东西。这取决于你是否一直在寻找现成的解决方案,或者写一点:)
DateTime dt = new DateTime(); // Now
DateTime plusDuration = dt.plus(new Duration(110376000000L)); // Now plus three years and a half

// Define and calculate the interval of time
Interval interval = new Interval(dt.getMillis(), plusDuration.getMillis());

// Parse the interval to period using the proper PeriodType
Period period = interval.toPeriod(PeriodType.yearMonthDayTime());

// Define the period formatter for pretty printing the period
PeriodFormatter pf = new PeriodFormatterBuilder()
        .appendYears().appendSuffix("y ", "y ")
        .appendMonths().appendSuffix("m", "m ").appendDays()
        .appendSuffix("d ", "d ").appendHours()
        .appendSuffix("h ", "h ").appendMinutes()
        .appendSuffix("m ", "m ").appendSeconds()
        .appendSuffix("s ", "s ").toFormatter();

// Print the period using the previously created period formatter
System.out.println(pf.print(period).trim());