如何在不同的字符串中查找日期并将其转换为正确的日期格式?

时间:2016-09-29 06:45:31

标签: c# angularjs

我有一个问题,

我正在使用angularjs作为前端,所以我在指令中有日期选择器。

<input  " + required + "  id='" + elementName + "' name='" + elementName + "' ng-model='question.answer.SelectedAnswer' readonly='' ng-click='opened=!opened' type='text' placeholder='Date'   datepicker-popup='" + format + "' is-open='opened' min-date='minDate' datepicker-options='dateOptions' close-text='Close' />

当我选择17-6-1992之类的日期并将其发送到DB时,它会像DB一样保存在DB中 2016-06-16T18:30:00.000Z而不是17-6-1992,但是当我从DB获取它时我得到的是2016-06-16T18:30:00.000Z,但是在同一输入中显示它它的出现就像17-6-1992。

基本上在DB中保存为上一个日期,但在UI中显示正确。 为什么会出现这个问题。

现在我想将此日期导出为控制器中的CSV。在CSV文件中,结果为2016-06-16T18:30:00.000Z。而不是在CSV中我也希望显示在UI中显示的内容,如上所述。

CSV文件中的

应该是17-6-1992,不需要日期。

string answerString = string.Join(",", answers.Where(i => string.IsNullOrWhiteSpace(i.Answer) == false).Select(j => j.Answer).ToArray());

这就是我用来编写CSV文件的内容,我会将所有答案作为字符串捕获并打印出来。这些答案包含该日期,所以我想找到答案中的日期格式,并需要将其转换为正确的日期格式。

1 个答案:

答案 0 :(得分:1)

“Z”是DateTimes的一种独特案例。文字“Z”实际上是UTC时间的ISO 8601日期时间标准的一部分。当在时间结束时添加“Z”(Zulu)时,它表示该时间是UTC,所以实际上文字Z是时间的一部分。这可能会为.NET中的日期格式库带来一些问题,因为它实际上是一个文字,而不是格式说明符。

您可以使用角度中的$ filter来过滤日期,这是Link

示例代码如下

的script.js

var app = angular.module('app', []);
app.controller('MyCtrl', function ($scope, $filter) {
    var jsonvalue = '2016-06-16T18:30:00.000Z';
    $scope.time = new Date(jsonvalue);
    $scope.parsed = $filter('date')($scope.time, "yyyy-MM-dd HH:mm:ss");
});

HTML

<div ng-controller="MyCtrl">
  <h1>Actual Parsed Date</h1>
      <p>{{parsed}}</p>
  <h1>With Time</h1>
    <p>{{time | date:'dd-MM-yyyy HH:mm:ss'}}</p>
     <h1>WithOut Time</h1>
      <p>{{time | date:'dd-MM-yyyy'}}</p>
</div>