我需要找到没有。两个日期之间的月份数,包括两个月份。我正在使用 ChronoUnit.Months.between,但得到了意想不到的结果。
代码适用于:1 月 31 日 - 7 月 31 日
失败日期:1 月 31 日 - 6 月 30 日
失败的代码:
import java.time.LocalDate;
import static java.time.temporal.ChronoUnit.MONTHS;
public class HelloWorld{
public static void main(String []args){
LocalDate startDate=LocalDate.of(2018,01,31);
LocalDate endDate=LocalDate.of(2018,6,30);
//Both dates inclusive, hence adding 1
long noOfMonths = (MONTHS.between(startDate,endDate)) + 1L;
System.out.println(" ********* No. of months between the two dates : " + noOfMonths);
}
}
Run Code Online (Sandbox Code Playgroud)
预期:6(1 月、2 月、3 月、4 月、5 月、6 月)实际:5
有效的代码:
import java.time.LocalDate;
import static java.time.temporal.ChronoUnit.MONTHS;
public class …Run Code Online (Sandbox Code Playgroud) 我的代码中有以下日志记录语句。
import org.slf4j.Logger;
public class MySampleClass {
private static final Logger logger = LoggerFactory.getLogger(MySmapleClass.class);
public void mySampleMethod(List<String> userID) {
logger.debug("userRuntimeId =" + userId);
.
.
.
Business Logic
.
.
}
}
Run Code Online (Sandbox Code Playgroud)
这将打印我的日志,如下所示,
2019-02-25 16:27:45,460 | 调试 | [fileTaskExecutor-2] | [a.abc.mySampleApp.handlers.userRecordHandler] | [MY_SAMPLE_APP] | [Vijay-20190225-162738.trigger] | [] | userRuntimeId = 3051aa39-2e0a-11e9-bee3-e7388cjg5le0
我想将日志打印为 JSON。我该怎么做?
我期望的示例 JSON 格式:
{
timestamp="2019-02-25 16:27:45,460" ,
level="DEBUG",
triggerName="fileTaskExecutor-2",
className="a.abc.mySampleApp.handlers.userRecordHandler",
appName="MY_SAMPLE_APP",
userRuntimeId="3051aa39-2e0a-11e9-bee3-e7388cjg5le0"
}
Run Code Online (Sandbox Code Playgroud)