减去不使用datetime

时间:2016-07-20 14:06:36

标签: c#

我试图将实际时间减去一些计算秒数:

 @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));

正在运作。

感谢。

2 个答案:

答案 0 :(得分:4)

你可以:

  1. 减去TimeSpan,产生DateTime
  2. 减去DateTime,产生TimeSpan
  3. 您试图减去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);
}