2012-05-22 31 views
7

tôi nhận được một giá trị ngày từ hoạt Javascript để một bộ điều khiển trong MVC và tôi muốn phân tích nó sang định dạng NET DateTime nhưng nó đem lại cho tôi một lỗi như:Chuyển đổi ngày hoạt Javascript để NET DateTime

Các chuỗi không được nhận dạng là Ngày giờ hợp lệ.

Định dạng kể từ ngày JavaScript là:

"Wed May 23 2012 01:40:00 GMT+0200 (W. Europe Daylight Time)" 

Tôi đã thử điều này, nhưng nó không làm việc:

DateTime.ParseExact(begin.Substring(1, 24), "ddd MMM d yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

bất cứ ai có thể cho tôi một mẫu mã xin vui lòng? cảm ơn!

Trả lời

6

Thay vì phân tích cú pháp trình bày văn bản, việc xây dựng một DateTime từ dấu thời gian thay vào đó sẽ mạnh hơn. Để có được một dấu thời gian từ một JS Date:

var msec = date.getTime(); 

Và để chuyển đổi msec (đại diện cho một số lượng mili giây) vào một DateTime:

var date = new DateTime(1970, 1, 1, 0, 0, 0, 0); // epoch start 
date = date.AddMilliseconds(msec); // you have to get this from JS of course 
+0

Từ NET 4.6 sử dụng '' 'DateTimeOffset.FromUnixTimeMilliseconds (mili giây) .DateTime''' –

5

Sau đây phân tích cũng với mặc định DateTime ModelBinder trong một Bộ điều khiển .NET MVC:

var myJsDate = new Date(); 
var myDotNetDate = myJsDate.toISOString(); 
+0

hoạt động hoàn hảo và ngắn gọn hơn – WraithNath

1

Đây là những gì tôi đã làm và tại sao. Tôi hi vọng cái này giúp được.

JS Ngày var d = new Date()

lợi: Thu 19 Tháng 11 08:30:18 PST 2015

C# không thích định dạng này để chuyển nó sang UTC:

var dc = d.toUTCString() 

lợi: Thu, 19 Nov 2015 16:30:18 UTC

UTC - Giờ thế giới không phải là múi giờ, do đó bạn cần thay đổi múi giờ thành múi giờ

var cr = dc.replace("UTC","GMT") 

bây giờ nó đã sẵn sàng để

Thu, ngày 19 tháng 11 năm 2015 16:30:18 GMT

Trong một dòng

var ol = d.toUTCString().replace("UTC","GMT")` 

Thu, ngày 19 tháng 11 năm 2015 16:30:18 GMT

cho C#

DateTime DateCreated= DateTime.Parse(ol); 
1

Bạn không cần bất kỳ chuyển đổi nào: bộ mô hình DateTime mặc định trong Bộ điều khiển .NET MVC hoạt động tốt với đối tượng Ngày tháng JavaScript.

Sử dụng Moment.js

1) .NET DateTime -> JavaScript Ngày

var jsDate = moment(dotNetDateTime).toDate(); 

2) Javascript ngày -> NET DateTime

var dotNetDateTime = jsDate; 
Các vấn đề liên quan