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},
}
\documentclass{...}
and ending with\end{document}
.biblatex
can deal with thedate
field inYYYY-MM-DD
format. If you actually usebiblatex
in the end, this will only confuse everyone involved. And if you don't you shouldn't export inbiblatex
format in the first place, I think.date
field always override the contents of theyear
andmonth
field; theday
field is not overwritten if it comes after thedate
field.