Biblatex: How to convert date field into year and month field?
This is something Biber can do in its tool mode.
Unfortunately, the solution originally suggested here ceased to work a while ago. Following https://github.com/plk/biber/issues/301 Biber was adjusted so things would work again. The fix will be available in Biber 2.15. For versions in between, I'm afraid I can not offer a simple Biber-based solution. (Maybe bibtool
can help here.)
Biber version 2.15 and above
We need the following config file, called, say, biber-date.conf
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_fieldcase>lower</output_fieldcase>
<datamodel>
<fields>
<field fieldtype="field" datatype="literal">year</field>
<field fieldtype="field" datatype="literal">month</field>
</fields>
<entryfields>
<field>year</field>
<field>month</field>
</entryfields>
</datamodel>
<sourcemap>
<maps datatype="bibtex">
<map map_overwrite="1">
<map_step map_field_source="date" map_match="[0-9]{4}-([0-9]{2})" map_final="1"/>
<map_step map_field_set="montha" map_field_value="$1"/>
</map>
<map map_overwrite="1">
<map_step map_field_source="date" map_match="([0-9]{4})" map_final="1"/>
<map_step map_field_set="yeara" map_field_value="$1"/>
</map>
</maps>
</sourcemap>
</config>
To convert the date
fields in your .bib
file run
biber --tool --configfile=biber-date.conf <yourbibfile>
For the example file augustus.bib
@article{kattan_timeseries_2015,
title = {Time-series event-based prediction: An unsupervised learning framework based on genetic programming},
journaltitle = {Information Sciences},
author = {Kattan, Ahmed and Fatima, Shaheen and Arif, Muhammad},
date = {2015-04}
}
@book{lorem,
title = {Lorem},
author = {Anne Uthor},
date = {2015}
}
@book{ipsum,
title = {Ipsum},
author = {Anne Uthor},
date = {2015-08-07},
}
the output (which you can find in augustus_bibertools.bib
after the biber --tool --configfile=biber-date.conf augustus.bib
run) is
@article{kattan_timeseries_2015,
author = {Kattan, Ahmed and Fatima, Shaheen and Arif, Muhammad},
journaltitle = {Information Sciences},
month = {4},
title = {Time-series event-based prediction: An unsupervised learning framework based on genetic programming},
year = {2015},
}
@book{lorem,
author = {Uthor, Anne},
title = {Lorem},
year = {2015},
}
@book{ipsum,
author = {Uthor, Anne},
date = {2015-08-07},
title = {Ipsum},
}
Old versions of Biber
We need the following config file, called say biber-date.conf
<?xml version="1.0" encoding="UTF-8"?>
<config>
<output_fieldcase>lower</output_fieldcase>
<sourcemap>
<maps datatype="bibtex" map_overwrite="1">
<map map_overwrite="1">
<map_step map_field_source="date" map_match="[0-9]{4}?-([0-9]{2}?)" map_final="1"/>
<map_step map_field_set="month" map_field_value="$1"/>
</map>
<map map_overwrite="1">
<map_step map_field_source="date" map_match="([0-9]{4}?)" map_final="1"/>
<map_step map_field_set="year" map_field_value="$1"/>
</map>
</maps>
</sourcemap>
</config>
The regular expressions are not particularly elegant, but the first one copies the month position of the date
field to the month
field, the second maps the year position to the year
field.
Now you just need to run biber --tool --configfile=biber-date.conf <yourbibfile>
On the example file augustus.bib
@article{kattan_timeseries_2015,
title = {Time-series event-based prediction: An unsupervised learning framework based on genetic programming},
journaltitle = {Information Sciences},
author = {Kattan, Ahmed and Fatima, Shaheen and Arif, Muhammad},
date = {2015-04}
}
@book{lorem,
title = {Lorem},
author = {Anne Uthor},
date = {2015}
}
@book{ipsum,
title = {Ipsum},
author = {Anne Uthor},
date = {2015-08-07},
}
the output (which you can find in augustus_bibertools.bib
after the biber --tool --configfile=biber-date.conf augustus.bib
run) is
@article{kattan_timeseries_2015,
author = {Kattan, Ahmed and Fatima, Shaheen and Arif, Muhammad},
date = {2015-04},
journaltitle = {Information Sciences},
month = {04},
title = {Time-series event-based prediction: An unsupervised learning framework based on genetic programming},
year = {2015},
}
@book{lorem,
author = {Anne Uthor},
date = {2015},
title = {Lorem},
year = {2015},
}
@book{ipsum,
author = {Anne Uthor},
date = {2015-08-07},
month = {08},
title = {Ipsum},
year = {2015},
}