Here is a formula you can use in the calculated field (Status):
Set the Data Type of the column to Number and add this formula:
=IF(ISBLANK([Expiration Date]),"No Expiration",
"<img src='/_layouts/images/blank.gif' onload=""{"
&"var date=new Date();"
&"date.setFullYear("
&YEAR([Expiration Date])&","
&MONTH([Expiration Date])-1&","
&DAY([Expiration Date])&");"
&"var DaysDiff=Math.round((date.getTime()-new Date().getTime())/86400000);"
&"this.parentNode.innerHTML=((DaysDiff<=0)?'Expired':'Current');"
&"}"">")
UPDATE
CSR to fix the HTML output on DispForm.aspx:
SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {
function getBaseHtml(ctx) {
return SPClientTemplates["_defaultTemplates"].Fields.default.all.all[ctx.CurrentFieldSchema.FieldType][ctx.BaseViewID](ctx);
}
function init() {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
Templates: {
Fields: {
"Status": {
DisplayForm: function(ctx) { return ctx.CurrentItem["Status"]; },
},
},
},
ListTemplateType: 101
});
}
RegisterModuleInit(SPClientTemplates.Utility.ReplaceUrlTokens("~siteCollection/Style Library/HTML2TextCSR.js"), init);
init();
});