页面
This commit is contained in:
parent
89f2b20df5
commit
1baa3dd861
@ -1,6 +1,6 @@
|
||||
import dayTs from '../../../utils/Date'
|
||||
import { CusCalendar } from './Calendar'
|
||||
import { promptAction } from '@kit.ArkUI'
|
||||
import { dateFormat } from '../../../utils/Utils'
|
||||
|
||||
@CustomDialog
|
||||
@Component
|
||||
@ -112,7 +112,7 @@ export struct DateRangePicker {
|
||||
|
||||
setup() {
|
||||
if (this.start && this.end) {
|
||||
this.value = [dayTs(this.start).format(this.format), dayTs(this.end).format(this.format)]
|
||||
this.value = [dateFormat(this.start, this.format), dateFormat(this.end, this.format)]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ export struct CusInput {
|
||||
bottom: 4,
|
||||
right: 8
|
||||
})
|
||||
.backgroundColor(0xeeeeee)
|
||||
.backgroundColor(0xffffff)
|
||||
.placeholderColor(0xd2d2d2)
|
||||
.placeholderFont({
|
||||
family: "Alimama"
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import display from '@ohos.display'
|
||||
import window from '@ohos.window'
|
||||
import dayTs from '../../../utils/Date'
|
||||
import common from '@ohos.app.ability.common'
|
||||
import { MediaPlayer, PlayerSourceType, PlayStatus } from '../../../utils/MediaPlayer'
|
||||
import { len2time } from '../../../utils/Utils'
|
||||
|
||||
interface VideoPlayerAttribute {
|
||||
type?: PlayerSourceType
|
||||
@ -429,9 +429,9 @@ export default struct VideoPlayer {
|
||||
buildCenterButton() {
|
||||
Row() {
|
||||
if (this.touchMode === TouchMode.Seek) {
|
||||
Text(dayTs().len2time(this.current + this.seekLength)).fontSize(10).fontColor(0xffffff)
|
||||
Text(len2time(this.current + this.seekLength)).fontSize(10).fontColor(0xffffff)
|
||||
Text("/").fontSize(10).fontColor(0xffffff).margin({ left: 2, right: 2 })
|
||||
Text(dayTs().len2time(this.duration)).fontSize(10).fontColor(0xffffff)
|
||||
Text(len2time(this.duration)).fontSize(10).fontColor(0xffffff)
|
||||
} else if (this.status === PlayStatus.Playing) {
|
||||
Image($rawfile("images/player/pause.png")).width(24).height(24)
|
||||
} else if (this.canPlay()) {
|
||||
@ -544,9 +544,9 @@ export default struct VideoPlayer {
|
||||
})
|
||||
|
||||
Row() {
|
||||
Text(dayTs().len2time(this.current)).fontSize(8).fontColor(0xffffff)
|
||||
Text(len2time(this.current)).fontSize(8).fontColor(0xffffff)
|
||||
Text("/").fontSize(8).fontColor(0xffffff).margin({ left: 2, right: 2 })
|
||||
Text(dayTs().len2time(this.duration)).fontSize(8).fontColor(0xffffff)
|
||||
Text(len2time(this.duration)).fontSize(8).fontColor(0xffffff)
|
||||
}.margin({ right: 8 })
|
||||
|
||||
Stack() {
|
||||
|
||||
@ -1,313 +0,0 @@
|
||||
/*
|
||||
* @Author: wangzhongjie
|
||||
* @Date: 2024-02-21 17:12:56
|
||||
* @LastEditors: wangzhongjie
|
||||
* @LastEditTime: 2024-02-21 21:29:49
|
||||
* @Description: 时间工具
|
||||
* @Email: shutdown0630@163.com
|
||||
*/
|
||||
interface DateData {
|
||||
getFullYear: () => number;
|
||||
getMonth: () => number;
|
||||
getDate: () => number;
|
||||
getHours: () => number;
|
||||
getMinutes: () => number;
|
||||
getSeconds: () => number;
|
||||
getDay: () => number;
|
||||
}
|
||||
|
||||
// 时间处理相关函数集合dayTs("2024-02-21 17:13:00").format("YYYY-MM-DD HH:mm:ss")
|
||||
class DayTs {
|
||||
dateData: Date
|
||||
|
||||
constructor(date: number | string | Date, offset?: number) {
|
||||
this.dateData = new Date(date)
|
||||
if (offset) {
|
||||
this.dateData = new Date(Number(this.dateData) + offset)
|
||||
}
|
||||
}
|
||||
|
||||
private static _paddingZero(num: number): string {
|
||||
return `${num}`.padStart(2, '0')
|
||||
}
|
||||
|
||||
// 格式化时间
|
||||
public format(formatter: string = 'yyyy/MM/dd HH:mm:ss') {
|
||||
const day = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
|
||||
const obj: Record<string, string | number | ((dateData: DateData) => string | number)> = {
|
||||
'Y{4}': (dateData: DateData) => dateData.getFullYear(),
|
||||
'y+': (dateData: DateData) => dateData.getFullYear(),
|
||||
'M{2}': (dateData: DateData) => DayTs._paddingZero(dateData.getMonth() + 1),
|
||||
"D{2}": (dateData: DateData) => DayTs._paddingZero(dateData.getDate()),
|
||||
'd{2}': (dateData: DateData) => DayTs._paddingZero(dateData.getDate()),
|
||||
'H{2}': (dateData: DateData) => DayTs._paddingZero(dateData.getHours()),
|
||||
'h{2}': (dateData: DateData) => DayTs._paddingZero(dateData.getHours() % 12),
|
||||
'm{2}': (dateData: DateData) => DayTs._paddingZero(dateData.getMinutes()),
|
||||
's{2}': (dateData: DateData) => DayTs._paddingZero(dateData.getSeconds()),
|
||||
'M': (dateData: DateData) => dateData.getMonth() + 1,
|
||||
'd': (dateData: DateData) => dateData.getDate(),
|
||||
'H': (dateData: DateData) => dateData.getHours(),
|
||||
'h': (dateData: DateData) => dateData.getHours() % 12,
|
||||
'm': (dateData: DateData) => dateData.getMinutes(),
|
||||
's': (dateData: DateData) => dateData.getSeconds(),
|
||||
'CW': (dateData: DateData) => day[dateData.getDay()],
|
||||
'W': (dateData: DateData) => dateData.getDay()
|
||||
};
|
||||
const objEntries = Object.entries(obj);
|
||||
for (let i = 0; i < objEntries.length; i++) {
|
||||
const key = objEntries[i][0];
|
||||
const value = objEntries[i][1];
|
||||
const regexp = new RegExp(`(${key})([^a-zA-Z])?`);
|
||||
const match = regexp.exec(formatter);
|
||||
if (match) {
|
||||
formatter = formatter.replace(match[1], `${(value as Function)(this.dateData)}`);
|
||||
}
|
||||
}
|
||||
|
||||
return formatter
|
||||
}
|
||||
|
||||
// 获取时间戳
|
||||
valueOf() {
|
||||
return this.dateData.getTime()
|
||||
}
|
||||
|
||||
// 获取年份
|
||||
year() {
|
||||
//
|
||||
return this.dateData.getFullYear()
|
||||
}
|
||||
|
||||
// 获取月份
|
||||
month() {
|
||||
return this.dateData.getMonth() + 1
|
||||
}
|
||||
|
||||
// 获取日期
|
||||
date() {
|
||||
return this.dateData.getDate()
|
||||
}
|
||||
|
||||
// 获取小时
|
||||
hour() {
|
||||
return this.dateData.getHours()
|
||||
}
|
||||
|
||||
// 获取分钟
|
||||
minute() {
|
||||
return this.dateData.getMinutes()
|
||||
}
|
||||
|
||||
// 获取秒
|
||||
second() {
|
||||
return this.dateData.getSeconds()
|
||||
}
|
||||
|
||||
// 获取毫秒
|
||||
millisecond() {
|
||||
return this.dateData.getMilliseconds()
|
||||
}
|
||||
|
||||
// 获取星期几
|
||||
day() {
|
||||
return this.dateData.getDay()
|
||||
}
|
||||
|
||||
// 获取一年中的第几天
|
||||
dayOfYear() {
|
||||
return 21
|
||||
}
|
||||
|
||||
// 获取一月中的第几天
|
||||
dayOfMonth() {
|
||||
return 21
|
||||
}
|
||||
|
||||
// 获取一周中的第几天
|
||||
dayOfWeek(format?: boolean) {
|
||||
const weeks = ["日", "一", "二", "三", "四", "五", "六",]
|
||||
return format ? weeks[this.dateData.getDay()] : this.dateData.getDay() + ""
|
||||
}
|
||||
|
||||
// 获取两个时间差值
|
||||
diff(date: Date | string, unit?: Unit, isFloat?: boolean) {
|
||||
// 计算this.dateData和date的时间差
|
||||
const date1 = new Date(this.dateData)
|
||||
const date2 = new Date(date)
|
||||
// 计算时间差
|
||||
const diffValue = date1.getTime() - date2.getTime()
|
||||
if (unit) {
|
||||
if (unit === "ms" || unit === "millisecond") {
|
||||
return diffValue
|
||||
}
|
||||
if (unit === "s" || unit === "second") {
|
||||
return Math.floor(diffValue / 1000)
|
||||
}
|
||||
if (unit === "m" || unit === "minute") {
|
||||
return Math.floor(diffValue / 1000 / 60)
|
||||
}
|
||||
if (unit === "h" || unit === "hour") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60)
|
||||
}
|
||||
if (unit === "d" || unit === "day") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24)
|
||||
}
|
||||
if (unit === "w" || unit === "week") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24 / 7)
|
||||
}
|
||||
if (unit === "M" || unit === "month") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24 / 30)
|
||||
}
|
||||
if (unit === "Q" || unit === "quarter") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24 / 30 / 3)
|
||||
}
|
||||
if (unit === "y" || unit === "year") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24 / 365)
|
||||
}
|
||||
|
||||
}
|
||||
return diffValue
|
||||
}
|
||||
|
||||
// 获取两个时间差值-传入时间戳
|
||||
diffByDateTime(startTime: number, endTime: number, unit?: Unit) {
|
||||
// 计算时间差
|
||||
const diffValue = endTime - startTime
|
||||
if (unit) {
|
||||
if (unit === "ms" || unit === "millisecond") {
|
||||
return diffValue
|
||||
}
|
||||
if (unit === "s" || unit === "second") {
|
||||
return Math.floor(diffValue / 1000)
|
||||
}
|
||||
if (unit === "m" || unit === "minute") {
|
||||
return Math.floor(diffValue / 1000 / 60)
|
||||
}
|
||||
if (unit === "h" || unit === "hour") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60)
|
||||
}
|
||||
if (unit === "d" || unit === "day") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24)
|
||||
}
|
||||
if (unit === "w" || unit === "week") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24 / 7)
|
||||
}
|
||||
if (unit === "M" || unit === "month") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24 / 30)
|
||||
}
|
||||
if (unit === "Q" || unit === "quarter") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24 / 30 / 3)
|
||||
}
|
||||
if (unit === "y" || unit === "year") {
|
||||
return Math.floor(diffValue / 1000 / 60 / 60 / 24 / 365)
|
||||
}
|
||||
|
||||
}
|
||||
return diffValue
|
||||
}
|
||||
|
||||
// 增加时间
|
||||
add(value: number, unit: Unit) {
|
||||
let newDate: number = 0
|
||||
// 从秒开始
|
||||
if (unit === "s" || unit === "second") {
|
||||
newDate = this.dateData.setSeconds(this.dateData.getSeconds() + value)
|
||||
}
|
||||
// 从分开始
|
||||
if (unit === "m" || unit === "minute") {
|
||||
newDate = this.dateData.setMinutes(this.dateData.getMinutes() + value)
|
||||
}
|
||||
// 从小时开始
|
||||
if (unit === "h" || unit === "hour") {
|
||||
newDate = this.dateData.setHours(this.dateData.getHours() + value)
|
||||
}
|
||||
// 从天开始
|
||||
if (unit === "d" || unit === "day") {
|
||||
newDate = this.dateData.setDate(this.dateData.getDate() + value)
|
||||
}
|
||||
return new DayTs(newDate)
|
||||
}
|
||||
|
||||
// 减少时间
|
||||
subtract(value: number, unit: Unit) {
|
||||
console.log(value.toString(), unit)
|
||||
|
||||
return 123456
|
||||
}
|
||||
|
||||
// 时间开始
|
||||
startOf(unit: StartEndUnit) {
|
||||
console.log(unit)
|
||||
return 123456
|
||||
}
|
||||
|
||||
// 时间结束
|
||||
endOf(unit: StartEndUnit) {
|
||||
console.log(unit)
|
||||
return 123456
|
||||
}
|
||||
|
||||
// 是否同一天
|
||||
compare(date: Date | number | string) {
|
||||
let tmp = dayTs(date)
|
||||
let isDay = this.year() === tmp.year() && this.month() === tmp.month() && this.date() === tmp.date()
|
||||
return isDay
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒转标准时间格式
|
||||
* @param time 时间长度 单位秒
|
||||
* @param showHour
|
||||
* @returns
|
||||
*/
|
||||
len2time(time: string | number, showHour: boolean = false) {
|
||||
let duration = +Number(time)
|
||||
let hour = Math.floor(duration / (60 * 60))
|
||||
let min = Math.floor((duration % (60 * 60)) / 60)
|
||||
let seconds = Math.floor(duration % 60)
|
||||
let timestamp = ""
|
||||
if (hour > 0 || showHour) {
|
||||
timestamp += hexTime(hour) + ":"
|
||||
}
|
||||
return timestamp + hexTime(min) + ":" + hexTime(seconds)
|
||||
}
|
||||
}
|
||||
|
||||
const hexTime = (num: number) => {
|
||||
return num < 10 ? `0${num}` : num + ''
|
||||
}
|
||||
type BaseUnit =
|
||||
"day" |
|
||||
"d" |
|
||||
"month" |
|
||||
"M" |
|
||||
"quarter" |
|
||||
"Q" |
|
||||
"year" |
|
||||
"y" |
|
||||
"week" |
|
||||
"w" |
|
||||
"hour" |
|
||||
"h" |
|
||||
"minute" |
|
||||
"m" |
|
||||
"second" |
|
||||
"s";
|
||||
|
||||
type Unit = BaseUnit | "millisecond" | "ms";
|
||||
|
||||
type StartEndUnit = BaseUnit | "isoWeek" | "date" | "D";
|
||||
|
||||
|
||||
// const proto = DayTs.prototype
|
||||
const dayTs = (date?: number | string | Date, offset?: number) => {
|
||||
if (!date) {
|
||||
date = new Date()
|
||||
}
|
||||
return new DayTs(date, offset)
|
||||
}
|
||||
|
||||
// dayTs.prototype = proto;
|
||||
|
||||
|
||||
export default dayTs
|
||||
@ -1,5 +1,6 @@
|
||||
import fs from '@ohos.file.fs'
|
||||
import hilog from '@ohos.hilog'
|
||||
import { dateFormat } from './Utils'
|
||||
|
||||
interface LoggerOption {
|
||||
mode?: LoggerMode
|
||||
@ -22,33 +23,7 @@ export enum LoggerMode {
|
||||
const MB = 1024 * 1024
|
||||
const Tag = "Logger"
|
||||
|
||||
function formatDate(date: Date, fmt = 'yyyy-MM-dd') {
|
||||
date = date instanceof Date ? date : new Date(date);
|
||||
|
||||
const pad = (n: number) => (n < 10 ? `0${n}` : `${n}`);
|
||||
const pad3 = (n: number) => (n < 10 ? `00${n}` : n < 100 ? `0${n}` : `${n}`);
|
||||
|
||||
return fmt
|
||||
.replace(new RegExp("yyyy"), date.getFullYear().toString())
|
||||
.replace(new RegExp("yy"), `${date.getFullYear()}`.slice(-2))
|
||||
.replace(new RegExp("MM"), pad(date.getMonth() + 1))
|
||||
.replace(new RegExp("M"), (date.getMonth() + 1).toString())
|
||||
.replace(new RegExp("dd"), pad(date.getDate()))
|
||||
.replace(new RegExp("d"), (date.getDate()).toString())
|
||||
.replace(new RegExp("HH"), pad(date.getHours()))
|
||||
.replace(new RegExp("H"), (date.getHours()).toString())
|
||||
.replace(new RegExp("hh"), pad(date.getHours() % 12 || 12))
|
||||
.replace(new RegExp("h"), (date.getHours() % 12 || 12).toString())
|
||||
.replace(new RegExp("mm"), pad(date.getMinutes()))
|
||||
.replace(new RegExp("m"), date.getMinutes().toString())
|
||||
.replace(new RegExp("ss"), pad(date.getSeconds()))
|
||||
.replace(new RegExp("s"), date.getSeconds().toString())
|
||||
.replace(new RegExp("SSS"), pad3(date.getMilliseconds()))
|
||||
.replace(new RegExp("S"), date.getMilliseconds().toString())
|
||||
.replace(new RegExp("a"), date.getHours() < 12 ? '上午' : '下午')
|
||||
.replace(new RegExp("A"), date.getHours() < 12 ? 'AM' : 'PM')
|
||||
.replace(new RegExp("q"), Math.floor((date.getMonth() + 3) / 3).toString());
|
||||
}
|
||||
|
||||
function pathJoin(...path: string[]) {
|
||||
return path.join("/")
|
||||
@ -58,8 +33,8 @@ export default class Logger {
|
||||
private static mode: LoggerMode = LoggerMode.Development
|
||||
private static level: LoggerLevel = LoggerLevel.Info
|
||||
private static size: number = MB * 10
|
||||
private static date: string = formatDate(new Date(), "yyyy_MM_dd")
|
||||
private static time: string = formatDate(new Date(), "HH_mm_ss.SSS")
|
||||
private static date: string = dateFormat(new Date(), "yyyy_MM_dd")
|
||||
private static time: string = dateFormat(new Date(), "HH_mm_ss.SSS")
|
||||
private static fd: number = 0
|
||||
private static dir: string = ""
|
||||
|
||||
@ -79,8 +54,8 @@ export default class Logger {
|
||||
|
||||
private static createNewFile() {
|
||||
try {
|
||||
Logger.date = formatDate(new Date(), "yyyy_MM_dd")
|
||||
Logger.time = formatDate(new Date(), "HH_mm_ss.SSS")
|
||||
Logger.date = dateFormat(new Date(), "yyyy_MM_dd")
|
||||
Logger.time = dateFormat(new Date(), "HH_mm_ss.SSS")
|
||||
let path = pathJoin(Logger.dir, Logger.date, Logger.time) + ".log"
|
||||
if (!fs.accessSync(path)) {
|
||||
let file = fs.openSync(path, fs.OpenMode.CREATE | fs.OpenMode.APPEND | fs.OpenMode.WRITE_ONLY)
|
||||
@ -119,7 +94,7 @@ export default class Logger {
|
||||
Logger.createNewFile()
|
||||
}
|
||||
fs.writeSync(Logger.fd,
|
||||
`[${formatDate(new Date(), "yyyy-MM-dd HH:mm:ss.SSS")}]-[${map[type]}]: ${resultMessage}\n`)
|
||||
`[${dateFormat(new Date(), "yyyy-MM-dd HH:mm:ss.SSS")}]-[${map[type]}]: ${resultMessage}\n`)
|
||||
} catch (e) {
|
||||
hilog.error(0x0000, Tag, JSON.stringify(e))
|
||||
}
|
||||
|
||||
@ -15,7 +15,7 @@ export class TaskPool<T> {
|
||||
private max: number = 10
|
||||
|
||||
constructor(max?: number) {
|
||||
this.max = this.max
|
||||
this.max = max || 10
|
||||
}
|
||||
|
||||
private async handleTask(task: Task<T>) {
|
||||
|
||||
43
entry/src/main/ets/utils/Utils.ets
Normal file
43
entry/src/main/ets/utils/Utils.ets
Normal file
@ -0,0 +1,43 @@
|
||||
export function dateFormat(date: Date, fmt = 'yyyy-MM-dd') {
|
||||
date = date instanceof Date ? date : new Date(date);
|
||||
|
||||
const pad = (n: number) => (n < 10 ? `0${n}` : `${n}`);
|
||||
const pad3 = (n: number) => (n < 10 ? `00${n}` : n < 100 ? `0${n}` : `${n}`);
|
||||
|
||||
return fmt
|
||||
.replace(new RegExp("yyyy"), date.getFullYear().toString())
|
||||
.replace(new RegExp("yy"), `${date.getFullYear()}`.slice(-2))
|
||||
.replace(new RegExp("MM"), pad(date.getMonth() + 1))
|
||||
.replace(new RegExp("M"), (date.getMonth() + 1).toString())
|
||||
.replace(new RegExp("dd"), pad(date.getDate()))
|
||||
.replace(new RegExp("d"), (date.getDate()).toString())
|
||||
.replace(new RegExp("HH"), pad(date.getHours()))
|
||||
.replace(new RegExp("H"), (date.getHours()).toString())
|
||||
.replace(new RegExp("hh"), pad(date.getHours() % 12 || 12))
|
||||
.replace(new RegExp("h"), (date.getHours() % 12 || 12).toString())
|
||||
.replace(new RegExp("mm"), pad(date.getMinutes()))
|
||||
.replace(new RegExp("m"), date.getMinutes().toString())
|
||||
.replace(new RegExp("ss"), pad(date.getSeconds()))
|
||||
.replace(new RegExp("s"), date.getSeconds().toString())
|
||||
.replace(new RegExp("SSS"), pad3(date.getMilliseconds()))
|
||||
.replace(new RegExp("S"), date.getMilliseconds().toString())
|
||||
.replace(new RegExp("a"), date.getHours() < 12 ? '上午' : '下午')
|
||||
.replace(new RegExp("A"), date.getHours() < 12 ? 'AM' : 'PM')
|
||||
.replace(new RegExp("q"), Math.floor((date.getMonth() + 3) / 3).toString());
|
||||
}
|
||||
|
||||
export function len2time(time: string | number, showHour: boolean = false) {
|
||||
const hexTime = (num: number) => {
|
||||
return num < 10 ? `0${num}` : num + ''
|
||||
}
|
||||
|
||||
let duration = +Number(time)
|
||||
let hour = Math.floor(duration / (60 * 60))
|
||||
let min = Math.floor((duration % (60 * 60)) / 60)
|
||||
let seconds = Math.floor(duration % 60)
|
||||
let timestamp = ""
|
||||
if (hour > 0 || showHour) {
|
||||
timestamp += hexTime(hour) + ":"
|
||||
}
|
||||
return timestamp + hexTime(min) + ":" + hexTime(seconds)
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user