visual foxpro 如何处理日期计算? (来自 java) date()-day(date())+1 操作的结果?
how does visual foxpro handle date calculation? (comming from java) result for date()-day(date())+1 operation?
公式 date()-day(date())+1 的正确值是多少?
if date() returns '2016/5/5'
是吗,2016/5/1?还是 2016/4/29?
因为将代码从 visual foxpro 转换为 java?
以下代码产生不同的结果。
Calendar today2 = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
endDate.add(Calendar.DATE, -1 * today2.get(Calendar.DATE));
endDate.add(Calendar.DATE, 1);
以上代码生成 2016/5/1,而:
Calendar today2 = Calendar.getInstance();
today2.add(Calendar.DATE, 1);
Calendar endDate = Calendar.getInstance();
endDate.add(Calendar.DATE, -1 * today2.get(Calendar.DATE));
以上代码生成 2016/4/29。
不确定哪个转换是正确的?
其实很明显,2016/5/1。数学很简单:
date() - day(date()) 将是 2016/5/5 - 5 天,即 2016/4/30(theDate - day(theDate) 给出上个月的最后一天,首先加 1 theDate 所在月份的第几天)。加上 1 天就是 2016/5/1.
我不知道 Java,但对我来说你的第二个 Java 代码是错误的。
在第一个中,您减去月份中的第几天然后加 1(与 VFP 所做的相同)。
在第二个中,您将 today2 设置为 "tomorrow",然后从今天的日期中减去明天的日期。这意味着 date() - (day(date()+1)) 你会得到上个月结束日期的前一天。
更新:我认为您可以将代码简化为:
Calendar today = Calendar.getInstance();
today.add(Calendar.DATE, 1 - today2.get(Calendar.DATE));
IOW 查找月初的 VFP 代码:
firstDayOfMonth = theDate - day(theDate) + 1
应翻译为:
Calendar firstDayOfMonth = Calendar.getInstance();
firstDayOfMonth.add(Calendar.DATE, 1 - firstDayOfMonth.get(Calendar.DATE));
公式 date()-day(date())+1 的正确值是多少?
if date() returns '2016/5/5'
是吗,2016/5/1?还是 2016/4/29?
因为将代码从 visual foxpro 转换为 java?
以下代码产生不同的结果。
Calendar today2 = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
endDate.add(Calendar.DATE, -1 * today2.get(Calendar.DATE));
endDate.add(Calendar.DATE, 1);
以上代码生成 2016/5/1,而:
Calendar today2 = Calendar.getInstance();
today2.add(Calendar.DATE, 1);
Calendar endDate = Calendar.getInstance();
endDate.add(Calendar.DATE, -1 * today2.get(Calendar.DATE));
以上代码生成 2016/4/29。
不确定哪个转换是正确的?
其实很明显,2016/5/1。数学很简单:
date() - day(date()) 将是 2016/5/5 - 5 天,即 2016/4/30(theDate - day(theDate) 给出上个月的最后一天,首先加 1 theDate 所在月份的第几天)。加上 1 天就是 2016/5/1.
我不知道 Java,但对我来说你的第二个 Java 代码是错误的。
在第一个中,您减去月份中的第几天然后加 1(与 VFP 所做的相同)。
在第二个中,您将 today2 设置为 "tomorrow",然后从今天的日期中减去明天的日期。这意味着 date() - (day(date()+1)) 你会得到上个月结束日期的前一天。
更新:我认为您可以将代码简化为:
Calendar today = Calendar.getInstance();
today.add(Calendar.DATE, 1 - today2.get(Calendar.DATE));
IOW 查找月初的 VFP 代码:
firstDayOfMonth = theDate - day(theDate) + 1
应翻译为:
Calendar firstDayOfMonth = Calendar.getInstance();
firstDayOfMonth.add(Calendar.DATE, 1 - firstDayOfMonth.get(Calendar.DATE));