Posts tagged ‘ASP’

23/05/2010

Convert chuỗi thành ngày tháng, tính khoảng cách giữa 2 ngày(ASP)

bởi timmuctieu

Làm thế nào để chuyển đổi một chuỗi thành một định dang ngày tháng trong ngôn ngữ ASP?
Làm thế nào để tính số tháng, số ngày, số phút, số giây giữa 2 giá trị ngày ?

Giả sử bạn lấy ra một chuỗi từ cơ sở dữ liệu dạng “dd/mm/yyyy” trong khi giờ trên hệ điều hành dạng “mm/dd/yyyy” , trong bài này tôi sẽ hướng dẫn bạn giải quyết 2 câu hỏi trên mà không cần để ý tới giờ hệ thống định dạng ntn.

Làm thế nào để convert chuỗi “dd/mm/yyy” kiểu Date.
Ví dụ chuyển chuỗi “22/05/2010” thành 1 giá trị ngày tháng, tôi sẽ dùng hàm FormatDateTime() để chuyển đổi.
Cú pháp: FormatDateTime(Date[, NamedFormat])
Trong đó:

  • Date: là chuỗi cần chuyển
  • NamedFormat: (có thể có hoặc không) nhận 1 trong các giá trị : 0, 1, 2, 3, 4

Với ví dụ trên ta sẽ có: <%giatri=FormatDateTime(“22/05/2010”)%>. Giờ đây biến giatri sẽ có kiểu Date.

Làm sao tính số ngày giữa 2 giá trị Date.
Ví dụ tính khoảng cách giữa 22/05/2010 và ngày hiện tại chúng ta có hàm DATEDIFF () để làm việc này.
Cú pháp: DATEDIFF ( datepart , startdate , enddate )
Trong đó:

  • datepart: định dạng giá trị nhận được, tham khảo các giá trị khác tại đây
  • startdate: ngày bắt đầu tính
  • enddate: ngày kết thúc

Với ví dụ trên ta giải quyết như sau:
<%
‘Truoc het can chuyen kieu chuoi ve kieu Date
ngay=FormatDateTime(“22/05/2010”)
‘Lay gia tri ngay tren he dieu hanh
ngayhientai=Date
‘Tinh
khoangcach=DateDiff(‘d’,ngay,ngayhientai)
%>

Làm thế nào chuyển kiểu chuỗi trong cơ sở dữ liệu thành kiểu ngày tháng khi hiển thị mà không cần quan tâm kiểu ngày tháng trên hệ thống?
Áp dụng các phương pháp trên, nhưng lưu ý cần phải khởi tạo một Session định dạng kiểu ngày tháng mặc định Session.LCID=”2057″ để đưa về dạng Ngày/Tháng/Năm
Ngoài ra:
<%Session.LCID=”2057″%> Định dạng: Ngày/Tháng/Năm (VD : 22/02/2009)
<%Session.LCID=”1033″%> Định dạng: Tháng/Ngày/Năm (VD : 2/22/2009)
<%Session.LCID=”1031″%> Định dạng: Ngày.Tháng.Năm (VD : 22.2.2009)
<%Session.LCID=”1043″%> Định dạng: Ngày-Tháng-Năm (VD : 22-12-2008)
Trong đó: giá trị số trong dấu nháy là giá trị LocaleID, giá trị này quyết định kiểu định dạng ngày tháng

Chú ý: Tất nhiên chuỗi từ csdl phải là chuỗi có đầy đủ thành phần ngày, tháng, năm. Bạn không thể chuyển 1 chuỗi bất kỳ “fabcdjfet32fd” về định dạng ngày tháng được.