如何使用dayjs模块将日期转换为我所需的格式



我正在通过cypress读取定位器的日期,实际日期是11/04/2023

cy.get("#eff-date").invoke('text').then(()=>{
const edate = dayjs(text.split(':')[1].format('DD-MMM-YYYY'))
})

返回什么

04-Nov-2023

应该是11-Apr-2023

一个更好的库是date-fns。它会在测试中告诉你什么时候格式错了。

import {parse, format} from 'date-fns'
it('tests date parsing and formatting', () => {
const text = 'Extension date: 11/04/2023'
const datePart = text.split(':')[1].trim()
const myDate = parse(datePart, 'dd/MM/yyyy', new Date())
const formatted = format(myDate, 'dd MMM yyyy')

expect(formatted).to.eq('11 Apr 2023')
})

您正在尝试解析非iso 8601日期字符串。根据dayjs文档:

为了解析除ISO 8601字符串之外的任何内容的一致结果,您应该使用String + Format。

下面应该可以工作。

var customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
...
cy.get("#eff-date")
.invoke('text')
.then(()=>{
// Have to pass the custom parsing format, which is MM and not MMM
const edate = dayjs(text.split(':')[1], 'DD-MM-YYYY');
// To display, we have to use dayjs.format()
console.log(edate.format('DD-MMM-YYYY');
})

关于使用String + Format(和customParseFormat)的更多信息在这里

相关内容

  • 没有找到相关文章

最新更新