我试图将实际时间减去一些计算秒数:
@Primary
@Bean(name = "dataSource")
@ConfigurationProperties(prefix="spring.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean
PlatformTransactionManager transactionManager() {
return new JpaTransactionManager(entityManagerFactory().getObject());
}
@Bean
LocalContainerEntityManagerFactoryBean entityManagerFactory() {
HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
jpaVendorAdapter.setGenerateDdl(false);
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
factoryBean.setDataSource(dataSource());
factoryBean.setJpaVendorAdapter(jpaVendorAdapter);
factoryBean.setPackagesToScan("com.xxxxxxxx.common.domain","com.xxxxxxx.tekram.cdrserver.domain");
return factoryBean;
}
它表示该参数不是" TimeSpan",但DateTime也应该有效......它必须接受这两种参数。
我在VS 2012上使用带有Windows窗体的Framework 2.0。
更新:发现错误; substract返回时间跨度。
DateTime start = new DateTime();
start = DateTime.Now.Subtract(Convert.ToDateTime(stringTime));
正在运作。
感谢。
答案 0 :(得分:4)
你可以:
TimeSpan
,产生DateTime
或DateTime
,产生TimeSpan
。您试图减去DateTime
,产生DateTime
。没有这样的方法。
答案 1 :(得分:2)
如果要将DateTime类型参数传递给Subtract()方法,则返回类型为TimeSpan。如果传递TimeSpan类型,则返回为DateTime。
因此,两种类型都被接受为参数,您只需要确保具有正确的返回类型。
查看DateTime.cs http://referencesource.microsoft.com/#mscorlib/system/datetime.cs,1057
public TimeSpan Subtract(DateTime value) {
return new TimeSpan(InternalTicks - value.InternalTicks);
}
public DateTime Subtract(TimeSpan value) {
long ticks = InternalTicks;
long valueTicks = value._ticks;
if (ticks - MinTicks < valueTicks || ticks - MaxTicks > valueTicks) {
throw new ArgumentOutOfRangeException("value", Environment.GetResourceString("ArgumentOutOfRange_DateArithmetic"));
}
return new DateTime((UInt64)(ticks - valueTicks) | InternalKind);
}