chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
// Vue Mixin - 日期轉換工具
|
||||
// 用於處理 ASP.NET ASMX Web Service 回傳的日期格式
|
||||
|
||||
var DateMixin = {
|
||||
methods: {
|
||||
/**
|
||||
* 格式化日期
|
||||
* @param {string|Date} dateStr - 日期字串或 Date 物件
|
||||
* @param {string} separator - 日期分隔符,預設為 "-"
|
||||
* @returns {string} 格式化後的日期字串
|
||||
*/
|
||||
FormatDate: function(dateStr, separator) {
|
||||
if (!dateStr) return '';
|
||||
|
||||
// 預設分隔符為 "-"
|
||||
if (separator === undefined) {
|
||||
separator = '-';
|
||||
}
|
||||
|
||||
// 處理 ASP.NET ASMX 的日期格式 /Date(1764622110737)/
|
||||
if (typeof dateStr === 'string' && dateStr.indexOf('/Date(') === 0) {
|
||||
var timestamp = parseInt(dateStr.match(/-?\d+/)[0]);
|
||||
var date = new Date(timestamp);
|
||||
var year = String(date.getFullYear()).padStart(4, '0');
|
||||
var month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
var day = String(date.getDate()).padStart(2, '0');
|
||||
return year + separator + month + separator + day;
|
||||
}
|
||||
|
||||
// 如果已經是一般的 Date 物件或其他格式
|
||||
var date = new Date(dateStr);
|
||||
if (!isNaN(date.getTime())) {
|
||||
var year = String(date.getFullYear()).padStart(4, '0');
|
||||
var month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
var day = String(date.getDate()).padStart(2, '0');
|
||||
return year + separator + month + separator + day;
|
||||
}
|
||||
|
||||
return dateStr;
|
||||
},
|
||||
|
||||
/**
|
||||
* 遍歷物件或陣列,自動轉換所有符合 ASP.NET ASMX 日期格式的屬性
|
||||
* @param {Object|Array} obj - 要處理的物件或陣列
|
||||
* @param {string} separator - 日期分隔符,預設為 "-"
|
||||
* @returns {Object|Array} 處理後的物件或陣列
|
||||
*/
|
||||
ConvertDatesInObject: function(obj, separator) {
|
||||
if (!obj) return obj;
|
||||
|
||||
// 預設分隔符為 "-"
|
||||
if (separator === undefined) {
|
||||
separator = '-';
|
||||
}
|
||||
|
||||
// 處理陣列
|
||||
if (Array.isArray(obj)) {
|
||||
return obj.map(function(item) {
|
||||
return this.ConvertDatesInObject(item, separator);
|
||||
}.bind(this));
|
||||
}
|
||||
|
||||
// 處理物件
|
||||
if (typeof obj === 'object') {
|
||||
var result = {};
|
||||
for (var key in obj) {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
var value = obj[key];
|
||||
|
||||
// 檢查是否為 ASP.NET ASMX 日期格式
|
||||
if (typeof value === 'string' && value.indexOf('/Date(') === 0) {
|
||||
result[key] = this.FormatDate(value, separator);
|
||||
}
|
||||
// 遞迴處理巢狀物件或陣列
|
||||
else if (value !== null && typeof value === 'object') {
|
||||
result[key] = this.ConvertDatesInObject(value, separator);
|
||||
}
|
||||
else {
|
||||
result[key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
return obj;
|
||||
},
|
||||
|
||||
/**
|
||||
* 格式化日期時間
|
||||
* @param {string|Date} dateStr - 日期字串或 Date 物件
|
||||
* @param {string} separator - 日期分隔符,預設為 "-"
|
||||
* @returns {string} 格式化後的日期時間字串
|
||||
*/
|
||||
FormatDateTime: function(dateStr, separator) {
|
||||
if (!dateStr) return '';
|
||||
|
||||
// 預設分隔符為 "-"
|
||||
if (separator === undefined) {
|
||||
separator = '-';
|
||||
}
|
||||
|
||||
var date;
|
||||
|
||||
// 處理 ASP.NET ASMX 的日期格式 /Date(1764622110737)/
|
||||
if (typeof dateStr === 'string' && dateStr.indexOf('/Date(') === 0) {
|
||||
var timestamp = parseInt(dateStr.match(/-?\d+/)[0]);
|
||||
date = new Date(timestamp);
|
||||
} else {
|
||||
date = new Date(dateStr);
|
||||
}
|
||||
|
||||
if (isNaN(date.getTime())) {
|
||||
return dateStr;
|
||||
}
|
||||
|
||||
var year = String(date.getFullYear()).padStart(4, '0');
|
||||
var month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
var day = String(date.getDate()).padStart(2, '0');
|
||||
var hours = String(date.getHours()).padStart(2, '0');
|
||||
var minutes = String(date.getMinutes()).padStart(2, '0');
|
||||
var seconds = String(date.getSeconds()).padStart(2, '0');
|
||||
|
||||
return year + separator + month + separator + day + ' ' + hours + ':' + minutes + ':' + seconds;
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user