我有一个对象数组,其日期字符串的格式为private void Form1_Load(object sender, EventArgs e)
{
string lines, studentNumber, studentMark;
StreamReader inputFile;
inputFile = File.OpenText("COM122.csv");
while (!inputFile.EndOfStream)
{
lines = inputFile.ReadLine();
studentInfo = lines.Split(',').ToList();
studentNumber = studentInfo[0];
studentMark = studentInfo[1];
lstMarks.Items.Add(studentNumber + " : " + studentMark);
}
inputFile.Close();
}
我很好奇,最好的做法是按照过去一天,过去一周,过去一个月和过去一年对这些进行排序。
我当时想只是在2019-03-22T13:36:18.333Z
拆分,然后在T
再次拆分
我也在考虑将日期放入Date对象,并以这种方式弄清楚。
最动态的是什么?最有效?等
-
const dates = [
{created_at: '2019-03-22T13:36:18.333Z'}
{created_at: '2019-05-22T13:36:18.333Z'}
{created_at: '2019-03-23T13:36:18.333Z'}
{created_at: '2019-03-24T13:36:18.333Z'}
{created_at: '2019-01-22T13:36:18.333Z'}
]
const spliteDate = (date, splitBy) => {
if(splitBy = 'day'){
return date.split("T")[0].split("-")[1]
} else if(splitBy = 'month') {
return date.split("T")[0].split("-")[2]
} else if(splitBy = 'year') {
return date.split("T")[0].split("-")[0]
}
}
类似的事情
答案 0 :(得分:3)
将字符串转换为Date对象可能是最简单的
例如,您有一个字符串格式的日期数组:
const arr = ['2019-03-22T13:36:18.333Z', '2019-03-28T16:36:18.333Z', '2015-05-21T16:36:18.333Z'];
看着您的问题,如果您想按某个日期过滤它,这样做肯定会更短,更有效:
const filterByDate = dateFilter => arr.filter(date => new Date(date).getDate() < dateFilter);
filterByDate(25);
// result [ '2019-03-22T13:36:18.333Z', '2019-05-21T16:36:18.333Z' ]
并且,如果您需要多个过滤器,例如按日期和年份过滤,
const filterByDateAndYear = (dateFilter, yearFilter) => arr.filter(date => (new Date(date).getDate() < dateFilter) && (new Date(date).getFullYear() < yearFilter));
filterByDateAndYear(25, 2018);
//result [ '2015-05-21T16:36:18.333Z' ]