2010-06-28 52 views
7

Tôi nhận được ngày của cơ sở dữ liệu của mình và tôi cần hiển thị nó dưới dạng Chuỗi. Vì vậy, trong Flex Tôi làm điều này:Ngày tới chuỗi <-> Chuỗi đến ngày

public static function dateToString(cDate:Date):String { 
     return cDate.date.toString()+"."+ 
      cDate.month.toString()+"."+ 
      cDate.fullYear.toString()+" "+ 
      cDate.hours.toString()+":"+ 
      cDate.minutes.toString()+":"+ 
      cDate.seconds.toString(); 
} 

Nhưng tôi nhận được ví dụ kết quả:

2010/07/13 0: 0: 15

Làm thế nào tôi có thể điền ngày, tháng, giờ, phút, giây với đệm 0?

Và, tôi quay trở lại từ String để Date with:

DateField.stringToDate(myTextInput.text, "DD.MM.YYYY HH:MM:SS"); 

Đây có phải là đúng? Tôi muốn có một ngày mà tôi sẽ chuyển qua BlazeDS đến một chương trình phụ trợ J2EE, nhưng tôi chỉ thấy trong cơ sở dữ liệu sau đó là một giá trị null. Vì vậy, đã xảy ra sự cố ...

Trân trọng.

Trả lời

19

Bạn đã xem lớp học DateFormatter chưa?

Ví dụ:

import mx.formatters.DateFormatter; 

private var dateFormatter:DateFormatter; 

private function init():void 
{ 
    dateFormatter = new DateFormatter(); 
    dateFormatter.formatString = 'DD.MM.YYYY HH:NN:SS' 
} 

public function dateToString(d:Date):String 
{ 
    return dateFormatter.format(d); 
} 

public function stringToDate(s:String):Date 
{ 
    return dateFormatter.parseDateString(s); 
} 

Dường như ai đó đang ngủ ngày mà viết Flex 3.2, vì DateFormatter::parseDateString là một chức năng bảo vệ. Có vẻ như họ đã cố định điều đó bằng 3,5.

+2

Phương thức stringToDate không hoạt động vì đó là phương thức được bảo vệ. Tôi đang sử dụng Flex 4. – Tim

+0

为什么 在 Flash CS4 中 会 报错 , 找不到 定义 mx.formatters.DateFormatter –

+0

'parseDateString()' không chấp nhận và cũng không tôn trọng một chuỗi định dạng, do đó, nó có thể là do cơ hội nếu chuỗi được chuyển đổi chính xác. – splash

5

Bạn có thể chuyển đổi Chuỗi thành Ngày với DateFormatter::parseDateString, nhưng phương pháp này được bảo vệ (?). Để truy cập vào phương pháp DateFormatter::parseDateString chỉ cần viết một wrapper đơn giản:

import mx.formatters.DateFormatter; 

public class DateFormatterWrapper extends DateFormatter 
{ 
    public function DateFormatterWrapper() 
    { 
     super(); 
    } 

    public function parseDate(str:String):Date 
    { 
     return parseDateString(str); 
    }  
} 
+0

Người bạn đời tuyệt vời, để có phương pháp được bảo vệ này. :) –

7

tôi thêm này vì chức năng stringToDate không hoạt động trên câu trả lời ở trên và wrapper đơn giản không cho phép bạn chỉ định các định dạng chuỗi đầu vào. Trình bao bọc thực sự không còn cần vì hàm bây giờ là tĩnh, nhưng bạn vẫn có cùng một vấn đề. Thay vào đó, tôi khuyên bạn nên sử dụng hàm tĩnh sau đây từ Lớp DateField.

//myObject.CreatedDate = "10022008" 

var d:Date = DateField.stringToDate(myObject.CreatedDate, "MMDDYYYY"); 
Các vấn đề liên quan