【鸿蒙Next】日期与字符串的互转例子

static clearLog(){
    let list = fs.listFileSync(Logger.logDirPath)
    console.log(`日志目录子文件 ${list}`)
    let toDelLogFile: string[] = []
    list.forEach((item)=> {
      let logDateStr: string = item.split('.')[0]
      const today = new Date();

      let dateElements: string[] = logDateStr.split('_')
      let formatDateStr = dateElements.join('-')
      // 使用正则表达式或其他方法解析字符串
      let dateObject = new Date(formatDateStr);

      // 计算两个日期之间的差值(以毫秒为单位)
      const timeDifference = today.getTime() - dateObject.getTime();

      // 将差值转换为天数、小时数、分钟数和秒数
      const seconds = Math.floor(timeDifference / 1000); // 总秒数
      const minutes = Math.floor(seconds / 60); // 总分钟数
      const hours = Math.floor(minutes / 60); // 总小时数
      const days = Math.floor(hours / 24); // 总天数
      if (days > 5) {
        toDelLogFile.push(item)
      }
    })

    let tmpList: string[]
    tmpList = toDelLogFile.map<string>((subFile)=>{
      return `${Logger.logDirPath}/${subFile}`
    })

    tmpList.forEach((item)=>{
      ZipUpload.deleteFile(item)
    })

  }

关键代码一: 把一个系统日期类不认识的字符串转成系统日期类可以直接解析成日期类的

如 2025_03_03转成2025-03-03,在生成日期类对象

      let dateElements: string[] = logDateStr.split('_')
      let formatDateStr = dateElements.join('-')
      // 使用正则表达式或其他方法解析字符串
      let dateObject = new Date(formatDateStr);

关键代码二:获取传入的日期与当前日期的差值,进行相应的逻辑处理

      // 计算两个日期之间的差值(以毫秒为单位)
      const timeDifference = today.getTime() - dateObject.getTime();

      // 将差值转换为天数、小时数、分钟数和秒数
      const seconds = Math.floor(timeDifference / 1000); // 总秒数
      const minutes = Math.floor(seconds / 60); // 总分钟数
      const hours = Math.floor(minutes / 60); // 总小时数
      const days = Math.floor(hours / 24); // 总天数
      if (days > 5) {
        toDelLogFile.push(item)
      }
 

### 关于鸿蒙系统中的日期选择器弹窗 在鸿蒙系统的应用开发中,日期选择器是一种常用的交互控件,用于让用户方便地选择特定的日期。虽然当前提供的引用未直接提及日期选择器的具体实现细节,但可以通过类比其他类似的弹窗组件(如警告弹窗、文本滑动选择器等),推测其可能的设计方式和调用逻辑。 #### 1. 使用 `DatePicker` 组件 鸿蒙提供了专门的 `DatePicker` 组件来处理日期的选择功能[^5]。该组件通常可以嵌入到弹窗或其他容器中,以便用户通过图形界面快速选定目标日期。 以下是基于 ArkTS 的简单示例代码: ```typescript import prompt from '@ohos.prompt'; import datepicker from '@ohos.datepicker'; function showDatePickerController() { let datePickerOption = { type: 'date', // 设置为日期模式 minDate: new Date('2023-01-01').getTime(), // 最小可选日期 maxDate: new Date('2099-12-31').getTime(), // 最大可选日期 defaultDate: new Date().getTime() // 默认显示当前日期 }; prompt.show({ title: '请选择日期', content: '', customComponentName: 'com.example.DatePickerComponent', // 自定义组件名称 buttons: [ { text: '取消' }, { text: '确认', primary: true } ], success: function(data) { console.log(`Selected date timestamp: ${data}`); } }); // 创建 DatePicker 实例 const dp = datepicker.create(datePickerOption); dp.on('change', (value) => { console.info(`Current selected date is: ${new Date(value).toLocaleDateString()}`); // 输出所选日期 }); } ``` 此代码片段展示了如何利用 `@ohos.prompt` 和 `@ohos.datepicker` 模块构建一个基本的日期选择弹窗。其中,`prompt.show()` 方法负责展示弹窗,而 `datepicker.create()` 则初始化了一个日期选择器实例[^6]。 --- #### 2. 集成自定义弹窗 (`CustomDialog`) 如果默认的弹窗样式无法满足求,则可通过自定义弹窗的方式进一步增强用户体验。例如,在 `CustomDialog` 中引入 `DatePicker` 并调整布局结构以适配具体场景。 以下是一个集成 `DatePicker` 的自定义弹窗模板: ```typescript // 定义 CustomDialog 参数对象 const dialogParams = { type: prompt.Type.DIALOG, title: '日期选择', message: '', // 可为空字符串 cancelable: true, // 是否允许点击外部关闭对话框 actions: [ { label: '取消', key: 'cancelAction' }, { label: '确定', key: 'confirmAction' } ] }; let currentDateTimestamp; // 显示自定义弹窗 prompt.custom(dialogParams, async (err, data) => { if (!err && data.key === 'confirmAction') { console.debug(`User confirmed the selection with value: ${currentDateTimestamp}`); } }); // 初始化日期选择器 const pickerInstance = await datepicker.create({ type: 'date', defaultDate: new Date().getTime() }); pickerInstance.on('change', (timestamp) => { currentDateTimestamp = timestamp; }); ``` 在此案例中,`custom()` 函数被用来加载带有动作按钮的定制化窗口,并且内部集成了动态更新的日期数据绑定机制[^7]。 --- #### 3. 结合实际业务扩展功能 对于更复杂的场景,比如要支持时间范围选取或者联动多个字段的情况,开发者还可以考虑将两个甚至更多个独立的日历视图组合起来形成复合型 UI 控制面板;另外也可以借助第三方库简化部分重复劳动过程——不过要注意的是这些额外依赖项可能会增加项目的维护成本以及兼容性风险评估工作量等问题[^8]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值