在Javascript中获取字符串中字符前面的文本
我试图在javascrip中获取字符串中“-”之前的文本,例如,我希望从2021年2月27日11:30到2021年2月27日11:30到12.30 下面是代码片段,但我得到了错误:无法读取未定义的属性“split”在Javascript中获取字符串中字符前面的文本,javascript,jquery,Javascript,Jquery,我试图在javascrip中获取字符串中“-”之前的文本,例如,我希望从2021年2月27日11:30到2021年2月27日11:30到12.30 下面是代码片段,但我得到了错误:无法读取未定义的属性“split” console.log( 新的国际日期时间格式(“en-US”{ 工作日:“长” }).格式( 新日期( $(“#上午事件预订”).find('am-event-sub-info:eq(1)).innerHTML.split('-')[0]//仅对“2021年2月27日上午11:3
console.log(
新的国际日期时间格式(“en-US”{
工作日:“长”
}).格式(
新日期(
$(“#上午事件预订”).find('am-event-sub-info:eq(1)).innerHTML.split('-')[0]//仅对“2021年2月27日上午11:30”部分感兴趣
)
)
)
容量:0/100
2021年2月27日上午11:30-下午1:00
有两种方法可以找到这个答案。示例一:
let date=“2021年2月27日上午11:30-下午1:00”;
让extractDate=date.substr(0,date.indexOf('-');
console.log(提取日期);
例二:
let date=“2021年2月27日上午11:30-下午1:00”;
让extractDate=date.split('-')[0];
console.log(提取日期);
您已在id属性
中添加了#
. 但您将遇到另一个问题,因为您在日期构造函数中传递的日期无效。您可以通过将第27个替换为第27个
console.log(
新的国际日期时间格式(“en-US”{
工作日:“长”
}).格式(
新日期(
$(“#am事件预订”)。查找('.am事件子信息:eq(1)')。text().trim().split('-')[0]。替换('-')//仅对“2021年2月27日上午11:30”部分感兴趣
)
)
)
容量:0/100
2021年2月27日上午11:30-下午1:00
使用Jquerytext()
可以获得期望值
$(文档).ready(函数(){
const innerHTMl=$(“.am事件子信息”).text();
log(innerHTMl.split('-')[0]);
})
容量:0/100
2021年2月27日上午11:30-下午1:00
导致此错误的原因是您尝试拆分的字符串未定义,这是因为ST jQuery语法无法正确返回您期望的结果
还有两个问题:
let dates = document.querySelectorAll('.am-event-sub-info');
dates.forEach(function(e) {
let dateString = e.innerText;
if (!isNaN(Date.parse(dateString))) {
let date = new Intl.DateTimeFormat('en-US', {
weekday: 'long'
}).format(
new Date(dateString)
)
//do something with "date"
console.log(date);
}
})
但是,由于日期字符串的格式不规则,如果您想让上面的内容起作用,您需要做些什么。如果您只对日期本身感兴趣,请使用一些正则表达式将let dateString转换为有效日期,这将使下面的代码起作用:
let dates = document.querySelectorAll('.am-event-sub-info');
dates.forEach(function (e) {
var dateString = e.innerText;
let re = /(\w+) (\d{1,2}\w\w), (\d\d\d\d)/;
if (re.test(dateString)) {
var match = re.exec(dateString);
let day = /\d{1,}/.exec(match[2])
let month = match[1].slice(0, 3);
let year = match[3];
let dt = new Date(Number(day, month, year));
//dt is now your full date
let date = new Intl.DateTimeFormat('en-US', {
weekday: 'long'
}).format(dt)
//do something with your formatted "date"
console.log(date);
}
})
jQuery元素没有
.innerHTML
,而是.val()
。这是正确的,但是OP的代码有一个不同的问题。。。