feat(时间格式化): 添加自定义时间格式化函数并替换dayjs使用

添加timeFormat函数用于更灵活地处理时间格式化,支持多种格式和不同时间戳类型
移除dayjs依赖,使用原生Date对象实现时间格式化功能
This commit is contained in:
zzp 2025-09-17 14:52:18 +08:00
parent df0b47d766
commit a775247a9f
1 changed files with 54 additions and 2 deletions

View File

@ -43,7 +43,11 @@
<view class="news-meta"> <view class="news-meta">
<view> <view>
<text class="source">{{ item.source }}</text> <text class="source">{{ item.source }}</text>
<text class="time">{{ dayjs(item.publish_time).format("YYYY-MM-DD HH:MM:ss") }}</text> <!-- <text class="time">{{ dayjs(item.publish_time).format("YYYY-MM-DD HH:MM:ss") }}</text> -->
<!-- .format('YYYY-MM-DD HH:mm:ss'); -->
<text class="time">
{{ timeFormat(new Date(item.publish_time).getTime()) }}
</text>
</view> </view>
<text class="score" v-if="needExp"> <text class="score" v-if="needExp">
<text v-if="index < 3">资讯评分</text> <text v-if="index < 3">资讯评分</text>
@ -70,7 +74,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, watch } from "vue"; import { ref, watch, computed } from "vue";
import dayjs from "dayjs/esm/index"; import dayjs from "dayjs/esm/index";
import LoginPopup from "@/components/loginPopup/index.vue"; import LoginPopup from "@/components/loginPopup/index.vue";
import { Session } from "@/utils/storage"; import { Session } from "@/utils/storage";
@ -170,6 +174,54 @@ const handlePopupSuccessCallback = () => {
const handlePopupErrorCallback = () => { const handlePopupErrorCallback = () => {
console.log("登录失败"); console.log("登录失败");
}; };
/**
* @description 格式化时间
* @param {String|Number} dateTime 需要格式化的时间戳
* @param {String} fmt 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd
* @returns {string} 返回格式化后的字符串
*/
function timeFormat(dateTime = null, formatStr = "yyyy-mm-dd hh:MM:ss") {
let date;
//
if (!dateTime) {
date = new Date();
}
// unix
else if (/^\d{10}$/.test(dateTime.toString().trim())) {
date = new Date(dateTime * 1000);
}
// new Date
else if (typeof dateTime === "string" && /^\d+$/.test(dateTime.trim())) {
date = new Date(Number(dateTime));
}
// RFC 2822
else {
// Safari/Webkitnew Date/
date = new Date(typeof dateTime === "string" ? dateTime.replace(/-/g, "/") : dateTime);
}
const timeSource = {
y: date.getFullYear().toString(), //
m: (date.getMonth() + 1).toString().padStart(2, "0"), //
d: date.getDate().toString().padStart(2, "0"), //
h: date.getHours().toString().padStart(2, "0"), //
M: date.getMinutes().toString().padStart(2, "0"), //
s: date.getSeconds().toString().padStart(2, "0"), //
//
};
for (const key in timeSource) {
const [ret] = new RegExp(`${key}+`).exec(formatStr) || [];
if (ret) {
//
const beginIndex = key === "y" && ret.length === 2 ? 2 : 0;
formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex));
}
}
return formatStr;
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">