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

Posted

技术标签:

【中文标题】如何在不同的字符串中查找日期并将其转换为正确的日期格式?【英文标题】:How to find date among different strings and convert it to correct date format? 【发布时间】:2017-02-07 08:40:30 【问题描述】:

我有一个问题,

我在前端使用 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 中 2016-06-16T18:30:00.000Z 而不是 17-6-1992,但是当我从 DB 取回它时,我得到的是 2016-06-16T18:30:00.000Z,但是在相同的输入中显示它1992 年 17 月 6 日即将到来。

基本上在 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 文件的内容,我会将所有答案作为字符串捕获并打印出来。这些答案包含那个日期,所以我想在答案中找到日期格式,需要将其转换为正确的日期格式。

【问题讨论】:

将您的数据库字段更改为仅日期而不是日期时间 检查是否可以将时间转换为非 UTC - 如果 C# 使用 -TimeZoneInfo.ConvertTimeToUtc 方法 (DateTime, TimeZoneInfo),反之亦然 - DateTime.ToUniversalTime 方法 () 【参考方案1】:

“Z”是 DateTimes 的一种特殊情况。文字“Z”实际上是 UTC 时间的 ISO 8601 日期时间标准的一部分。当在时间的末尾添加“Z”(祖鲁语)时,表示该时间是 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>

【讨论】:

问题是我不希望它在 angularjs 端转换,我希望它在 C# 端转换以创建文件。

以上是关于如何在不同的字符串中查找日期并将其转换为正确的日期格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何解析 DateTime 并将其转换为 RFC 822 日期时间格式?

如何查找上周日的日期并将其保存在Windows批处理文件的变量中

Oracle - 都获取 XML 日期字符串并将其转换为日期

如何将日期字符串转换为具有不同日期格式的时间戳?

如何选择不同时区的日期?

如何在 PostgreSQL 中获取表的每一天的第一个日期并将其转换为 JSON