我正在使用moment.js比较我的javascript代码中的两个日期。 输入值从JSON字符串传递。
当我提供日期21/01/2050 00:00(MM / DD / YYYY HH:mm FORMAT)时,结果日期显示为21/1/1950 00:00。 我尝试使用以下选项:
moment(item["End Date"]).utc().format()
moment(item["Start Date"]).format('MM/DD/YYYY HH:mm')
moment(new Date(item["Start Date"])).format('MM/DD/YYYY HH:mm')
但这些仍然是1950年而不是2050年。
有没有办法正确格式化这个?
答案 0 :(得分:2)
由于您的输入不是{8}标识的ISO 8601或RFC 2822格式3>
当从字符串创建片刻时,我们首先检查字符串是否与已知的
moment(String)
格式匹配,然后检查字符串是否与ISO 8601格式匹配,然后再降至{{1}的后退如果找不到已知格式。警告:浏览器对解析字符串的支持不一致。因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的功能在其他浏览器中不起作用。
要解析除ISO 8601字符串以外的任何内容的一致结果,您应该使用RFC 2822 Date time。
所以你必须使用String + Format,将 public static void SaveCurrentPlaylistToSheet(YouTubeVideo[] CurrentPlaylist)
{
string currentTitle;
using (connection = new OleDbConnection(ConnectionString))
{
connection.Open();
command = new OleDbCommand();
command.Connection = connection;
using (command = connection.CreateCommand())
{
for (int i = 0; i < CurrentPlaylist.Length; i++)
{
currentTitle = Regex.Replace(CurrentPlaylist[i].title, " ", "");
if (NewPlaylist)
{
command.CommandText = string.Format("INSERT INTO [" + ActiveSheetTitle + "] (F1) values({0})", currentTitle);
NewPlaylist = false;
}
else
{
command.CommandText = string.Format("INSERT INTO [" + ActiveSheetTitle + "$] (F1) values({0})", currentTitle);
}
command.ExecuteNonQuery(); // Execute insert query against excel file.
}
}
作为第二个参数传递。
这是一个实时样本:
new Date(string)
&#13;
'DD/MM/YYYY HH:mm'
&#13;