我正在通过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)的更多信息在这里