格式化vb.net中的日期值仍然返回错误的值

时间:2017-01-26 15:16:49

标签: vb.net date datetime crystal-reports format

下面的代码是我用来为Crystal Report设置选择公式的代码。

Dim dateTo As Date
 dateTo = dtpCRTo.Value.ToShortDateString
 dateTo = Format(dateTo, "dd/MM/yyyy")

If cmbCRSupplier.Value = "" Then
   selectionFormula = "{Sales_Headers.Stage} = '6' AND {Sales_Lines.PaymentDate} <= #" & dateTo & "#"

我遇到的问题是,我正在测试的数据的Sales_Headers.Stage值为6,这很好,Sales_Lines.PaymentDate值为30/11/2016(In但是,即使我使用的dd/MM/yyyy显示在2016年12月11日,英国DateTimePicker格式也是如此,dateTo的值将在12/11/2016返回,即{ {1}}格式,因此报告不显示数据,因为该日期早于付款日期。

为什么日期以这种格式返回,即使我正在格式化它?

修改

此外,在我将格式化部分放入并在选择公式中使用MM/dd/yyyy之前,它仍然做了同样的事情。

对于日期部分小于13的任何日期,它将该部分视为一个月,但一旦该部分为13或更多时工作正常......

编辑2:

我现在的查询如下:

dtpCRTo.Value.ToShortDateString

这适用于所有日期,除非选择每个月的最后一天。如果我选择1月31日,则 Dim dateTo As Date = dtpCRTo.Value.AddDays(1).Date dateTo = Format(dateTo, "dd/MM/yyyy") If cmbCRSupplier.Value = "" Then selectionFormula = "{Sales_Headers.Stage} = '6' AND {Sales_Lines.PaymentDate} < #" & dateTo & "#" 值将变为02/01(2月2日),在公式中将其视为1月2日。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

格式属性:

$namdetailsArray = array();
foreach ($names as $name => $desc) {
    $personArray = array();
    foreach ($desc as $key => $value) {
        $personArray[] = array($key, $value);
    }
    $namdetailsArray[$name] = $personArray;
}

代码背后:

1. DatePicker > Properties > CustomFormat > (Enter format you want here)
2. Properties > Format > Custom

要么在“属性”或“代码隐藏”中进行格式化。