2016-09-29 17 views
0

我有一個問題,如何在不同的字符串中查找日期並將其轉換爲正確的日期格式?

我正在使用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像 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,我也想顯示上面提到的用戶界面中顯示的內容。

在CSV文件中應該是17-6-1992,不需要日期。

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

這是我用來編寫CSV文件,我會捕獲所有的答案作爲字符串和打印它。這些答案包含該日期,所以我想找到答案中的日期格式,並且需要將其轉換爲適當的日期格式。

+0

只改變你的db字段而不是datetime –

+0

檢查是否可以將時間轉換爲非UTC - 如果C#使用-TimeZoneInfo.ConvertTimeToUtc方法(DateTime,TimeZoneInfo)或反之亦然 - DateTime.ToUniversalTime方法() –

回答

1

對於DateTime,「Z」是一種獨特的情況。文字「Z」實際上是UTC時間的ISO 8601日期時間標準的一部分。當在時間的末尾添加「Z」(Zulu)時,它表示那個時間是UTC,所以真正的Z是時間的一部分。這可能會在.NET中爲日期格式庫創建一些問題,因爲它實際上是一個文字,而不是格式說明符。

你可以簡單的使用$過濾器的角度來篩選日期,這裏是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> 
+1

問題是我不希望它在angularjs端轉換,我希望它能夠在C#端進行文件創建。 –

相關問題